]> andersk Git - splint.git/blobdiff - src/cgrammar.c.der
*** empty log message ***
[splint.git] / src / cgrammar.c.der
index 7aa743ac3e2008ab321392594a470f1d568e6c14..8f191784bbb481fc9ab5919e18a33206fc1e9ff2 100644 (file)
 /*@-dependenttrans@*/
 /*@-unqualifiedtrans@*/
 /*@-nullassign@*/
+/*@-declundef@*/
 
+/*drl added 11/27/2001*/
+/*@-arraybounds@*/
+/*@-arrayboundsread@*/
 /* < end of bison.head > */
 
 
 /*  A Bison parser, made from cgrammar.y
- by  GNU Bison version 1.25
-  */
+    by GNU Bison version 1.28  */
 
 #define YYBISON 1  /* Identify Bison output.  */
 
-#define        BADTOK  258
-#define        SKIPTOK 259
-#define        CTOK_ELIPSIS    260
-#define        CASE    261
-#define        DEFAULT 262
-#define        CIF     263
-#define        CELSE   264
-#define        SWITCH  265
-#define        WHILE   266
-#define        DO      267
-#define        CFOR    268
-#define        GOTO    269
-#define        CONTINUE        270
-#define        BREAK   271
-#define        RETURN  272
-#define        TSEMI   273
-#define        TLBRACE 274
-#define        TRBRACE 275
-#define        TCOMMA  276
-#define        TCOLON  277
-#define        TASSIGN 278
-#define        TLPAREN 279
-#define        TRPAREN 280
-#define        TLSQBR  281
-#define        TRSQBR  282
-#define        TDOT    283
-#define        TAMPERSAND      284
-#define        TEXCL   285
-#define        TTILDE  286
-#define        TMINUS  287
-#define        TPLUS   288
-#define        TMULT   289
-#define        TDIV    290
-#define        TPERCENT        291
-#define        TLT     292
-#define        TGT     293
-#define        TCIRC   294
-#define        TBAR    295
-#define        TQUEST  296
-#define        CSIZEOF 297
+#define        BADTOK  257
+#define        SKIPTOK 258
+#define        CTOK_ELIPSIS    259
+#define        CASE    260
+#define        DEFAULT 261
+#define        CIF     262
+#define        CELSE   263
+#define        SWITCH  264
+#define        WHILE   265
+#define        DO      266
+#define        CFOR    267
+#define        GOTO    268
+#define        CONTINUE        269
+#define        BREAK   270
+#define        RETURN  271
+#define        TSEMI   272
+#define        TLBRACE 273
+#define        TRBRACE 274
+#define        TCOMMA  275
+#define        TCOLON  276
+#define        TASSIGN 277
+#define        TLPAREN 278
+#define        TRPAREN 279
+#define        TLSQBR  280
+#define        TRSQBR  281
+#define        TDOT    282
+#define        TAMPERSAND      283
+#define        TEXCL   284
+#define        TTILDE  285
+#define        TMINUS  286
+#define        TPLUS   287
+#define        TMULT   288
+#define        TDIV    289
+#define        TPERCENT        290
+#define        TLT     291
+#define        TGT     292
+#define        TCIRC   293
+#define        TBAR    294
+#define        TQUEST  295
+#define        CSIZEOF 296
+#define        CALIGNOF        297
 #define        ARROW_OP        298
 #define        CTYPEDEF        299
 #define        COFFSETOF       300
 #define        CENUM   323
 #define        VA_ARG  324
 #define        VA_DCL  325
-#define        QGLOBALS        326
-#define        QMODIFIES       327
-#define        QNOMODS 328
-#define        QCONSTANT       329
-#define        QFUNCTION       330
-#define        QITER   331
-#define        QDEFINES        332
-#define        QUSES   333
-#define        QALLOCATES      334
-#define        QSETS   335
-#define        QRELEASES       336
-#define        QPRECLAUSE      337
-#define        QPOSTCLAUSE     338
-#define        QALT    339
-#define        QUNDEF  340
-#define        QKILLED 341
-#define        QENDMACRO       342
-#define        LLMACRO 343
-#define        LLMACROITER     344
-#define        LLMACROEND      345
-#define        TENDMACRO       346
-#define        QSWITCHBREAK    347
-#define        QLOOPBREAK      348
-#define        QINNERBREAK     349
-#define        QSAFEBREAK      350
-#define        QINNERCONTINUE  351
-#define        QFALLTHROUGH    352
-#define        QLINTNOTREACHED 353
-#define        QLINTFALLTHROUGH        354
-#define        QLINTFALLTHRU   355
-#define        QARGSUSED       356
-#define        QPRINTFLIKE     357
-#define        QLINTPRINTFLIKE 358
-#define        QSCANFLIKE      359
-#define        QMESSAGELIKE    360
-#define        QNOTREACHED     361
-#define        QCONST  362
-#define        QVOLATILE       363
-#define        QINLINE 364
-#define        QEXTENSION      365
-#define        QEXTERN 366
-#define        QSTATIC 367
-#define        QAUTO   368
-#define        QREGISTER       369
-#define        QOUT    370
-#define        QIN     371
-#define        QYIELD  372
-#define        QONLY   373
-#define        QTEMP   374
-#define        QSHARED 375
-#define        QREF    376
-#define        QUNIQUE 377
-#define        QCHECKED        378
-#define        QUNCHECKED      379
-#define        QCHECKEDSTRICT  380
-#define        QCHECKMOD       381
-#define        QKEEP   382
-#define        QKEPT   383
-#define        QPARTIAL        384
-#define        QSPECIAL        385
-#define        QOWNED  386
-#define        QDEPENDENT      387
-#define        QRETURNED       388
-#define        QEXPOSED        389
-#define        QNULL   390
-#define        QOBSERVER       391
-#define        QISNULL 392
-#define        QEXITS  393
-#define        QMAYEXIT        394
-#define        QNEVEREXIT      395
-#define        QTRUEEXIT       396
-#define        QFALSEEXIT      397
-#define        QLONG   398
-#define        QSIGNED 399
-#define        QUNSIGNED       400
-#define        QSHORT  401
-#define        QUNUSED 402
-#define        QSEF    403
-#define        QNOTNULL        404
-#define        QRELNULL        405
-#define        QABSTRACT       406
-#define        QCONCRETE       407
-#define        QMUTABLE        408
-#define        QIMMUTABLE      409
-#define        QTRUENULL       410
-#define        QFALSENULL      411
-#define        QEXTERNAL       412
-#define        QREFCOUNTED     413
-#define        QREFS   414
-#define        QNEWREF 415
-#define        QTEMPREF        416
-#define        QKILLREF        417
-#define        QRELDEF 418
-#define        CGCHAR  419
-#define        CBOOL   420
-#define        CINT    421
-#define        CGFLOAT 422
-#define        CDOUBLE 423
-#define        CVOID   424
-#define        QANYTYPE        425
-#define        QINTEGRALTYPE   426
-#define        QUNSIGNEDINTEGRALTYPE   427
-#define        QSIGNEDINTEGRALTYPE     428
-#define        IDENTIFIER      429
-#define        NEW_IDENTIFIER  430
-#define        CCONSTANT       431
-#define        ITER_NAME       432
-#define        ITER_ENDNAME    433
-#define        TYPE_NAME       434
-#define        TYPE_NAME_OR_ID 435
+#define        QWARN   326
+#define        QGLOBALS        327
+#define        QMODIFIES       328
+#define        QNOMODS 329
+#define        QCONSTANT       330
+#define        QFUNCTION       331
+#define        QITER   332
+#define        QDEFINES        333
+#define        QUSES   334
+#define        QALLOCATES      335
+#define        QSETS   336
+#define        QRELEASES       337
+#define        QPRECLAUSE      338
+#define        QPOSTCLAUSE     339
+#define        QALT    340
+#define        QUNDEF  341
+#define        QKILLED 342
+#define        QENDMACRO       343
+#define        LLMACRO 344
+#define        LLMACROITER     345
+#define        LLMACROEND      346
+#define        TENDMACRO       347
+#define        QSWITCHBREAK    348
+#define        QLOOPBREAK      349
+#define        QINNERBREAK     350
+#define        QSAFEBREAK      351
+#define        QINNERCONTINUE  352
+#define        QFALLTHROUGH    353
+#define        QLINTNOTREACHED 354
+#define        QLINTFALLTHROUGH        355
+#define        QLINTFALLTHRU   356
+#define        QARGSUSED       357
+#define        QPRINTFLIKE     358
+#define        QLINTPRINTFLIKE 359
+#define        QSCANFLIKE      360
+#define        QMESSAGELIKE    361
+#define        QNOTREACHED     362
+#define        QCONST  363
+#define        QVOLATILE       364
+#define        QINLINE 365
+#define        QEXTENSION      366
+#define        QEXTERN 367
+#define        QSTATIC 368
+#define        QAUTO   369
+#define        QREGISTER       370
+#define        QOUT    371
+#define        QIN     372
+#define        QYIELD  373
+#define        QONLY   374
+#define        QTEMP   375
+#define        QSHARED 376
+#define        QREF    377
+#define        QUNIQUE 378
+#define        QCHECKED        379
+#define        QUNCHECKED      380
+#define        QCHECKEDSTRICT  381
+#define        QCHECKMOD       382
+#define        QKEEP   383
+#define        QKEPT   384
+#define        QPARTIAL        385
+#define        QSPECIAL        386
+#define        QOWNED  387
+#define        QDEPENDENT      388
+#define        QRETURNED       389
+#define        QEXPOSED        390
+#define        QNULL   391
+#define        QOBSERVER       392
+#define        QISNULL 393
+#define        QEXITS  394
+#define        QMAYEXIT        395
+#define        QNEVEREXIT      396
+#define        QTRUEEXIT       397
+#define        QFALSEEXIT      398
+#define        QLONG   399
+#define        QSIGNED 400
+#define        QUNSIGNED       401
+#define        QSHORT  402
+#define        QUNUSED 403
+#define        QSEF    404
+#define        QNOTNULL        405
+#define        QRELNULL        406
+#define        QABSTRACT       407
+#define        QCONCRETE       408
+#define        QMUTABLE        409
+#define        QIMMUTABLE      410
+#define        QTRUENULL       411
+#define        QFALSENULL      412
+#define        QEXTERNAL       413
+#define        QREFCOUNTED     414
+#define        QREFS   415
+#define        QNEWREF 416
+#define        QTEMPREF        417
+#define        QKILLREF        418
+#define        QRELDEF 419
+#define        CGCHAR  420
+#define        CBOOL   421
+#define        CINT    422
+#define        CGFLOAT 423
+#define        CDOUBLE 424
+#define        CVOID   425
+#define        QANYTYPE        426
+#define        QINTEGRALTYPE   427
+#define        QUNSIGNEDINTEGRALTYPE   428
+#define        QSIGNEDINTEGRALTYPE     429
+#define        QNULLTERMINATED 430
+#define        QSETBUFFERSIZE  431
+#define        QSETSTRINGLENGTH        432
+#define        QMAXSET 433
+#define        QMAXREAD        434
+#define        QTESTINRANGE    435
+#define        TCAND   436
+#define        IDENTIFIER      437
+#define        NEW_IDENTIFIER  438
+#define        TYPE_NAME_OR_ID 439
+#define        CANNOTATION     440
+#define        CCONSTANT       441
+#define        ITER_NAME       442
+#define        ITER_ENDNAME    443
+#define        TYPE_NAME       444
+#define        METASTATE_NAME  445
 
 #line 19 "cgrammar.y"
 
 
 extern int yylex ();
 extern void swallowMacro (void);
+extern void yyerror (char *);
 
 # include "lclintMacros.nf"
 # include "basic.h"
+# include "cscanner.h"
 # include "cgrammar.h"
 # include "exprChecks.h"
 
@@ -268,30 +284,72 @@ extern void swallowMacro (void);
 /*@-matchfields@*/
 
 # define SHOWCSYM FALSE
-void yyerror (char *s);
 
-#line 59 "cgrammar.y"
+/*
+** This is necessary, or else when the bison-generated code #include's malloc.h,
+** there will be a parse error.
+**
+** Unfortunately, it means the error checking on malloc, etc. is lost for allocations
+** in bison-generated files under Win32.
+*/
+
+# ifdef WIN32
+# undef malloc
+# undef calloc
+# undef realloc
+# endif
+
+
+#line 75 "cgrammar.y"
 typedef union
 {
- lltok tok;
- int count;
- specialClauseKind sck;
- qual typequal;
- qualList tquallist;
- ctype ctyp;
- sRef sr;
- /*@only@*/ qtype qtyp;
- /*@only@*/ cstring cname;
- /*@only@*/ idDecl ntyp;
- /*@only@*/ idDeclList ntyplist;
- /*@only@*/ uentryList flist;
- /*@owned@*/ uentryList entrylist;
- /*@observer@*/ /*@dependent@*/ uentry entry;
- /*@only@*/ uentry oentry;
- /*@only@*/ exprNode expr;
- /*@only@*/ enumNameList enumnamelist;
- /*@only@*/ exprNodeList alist;
- /*@only@*/ sRefSet srset; 
+  lltok tok;
+  int count;
+  qual typequal;
+  qualList tquallist;
+  ctype ctyp;
+  /*@dependent@*/ sRef sr;
+  /*@only@*/ sRef osr;
+
+  /*@only@*/ functionClauseList funcclauselist;
+  /*@only@*/ functionClause funcclause;  
+  /*@only@*/ flagSpec flagspec;
+  /*@only@*/ globalsClause globsclause;
+  /*@only@*/ modifiesClause modsclause;
+  /*@only@*/ warnClause warnclause;
+  /*@only@*/ stateClause stateclause;
+
+  /*@only@*/ functionConstraint fcnconstraint; 
+
+  /*@only@*/ metaStateConstraint msconstraint;
+  /*@only@*/ metaStateSpecifier msspec;
+  /*@only@*/ metaStateExpression msexpr;
+  /*@observer@*/ metaStateInfo msinfo;
+
+  /*@only@*/ sRefList srlist;
+  /*@only@*/ globSet globset;
+  /*@only@*/ qtype qtyp;
+  /*@only@*/ cstring cname;
+  /*@observer@*/ annotationInfo annotation;
+  /*@only@*/ idDecl ntyp;
+  /*@only@*/ idDeclList ntyplist;
+  /*@only@*/ uentryList flist;
+  /*@owned@*/ uentryList entrylist;
+  /*@observer@*/ /*@dependent@*/ uentry entry;
+  /*@only@*/ uentry oentry;
+  /*@only@*/ exprNode expr;
+  /*@only@*/ enumNameList enumnamelist;
+  /*@only@*/ exprNodeList exprlist;
+  /*@only@*/ sRefSet srset; 
+  /*@only@*/ cstringList cstringlist;
+
+  /*drl
+    added 1/19/2001
+  */
+  constraint con;
+  constraintList conL;
+  constraintExpr conE;
+  /* drl */  
 } YYSTYPE;
 #ifndef YYDEBUG
 #define YYDEBUG 1
@@ -307,11 +365,11 @@ typedef union
 
 
 
-#define        YYFINAL         1150
+#define        YYFINAL         1189
 #define        YYFLAG          -32768
-#define        YYNTBASE        181
+#define        YYNTBASE        192
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 435 ? yytranslate[x] : 407)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 445 ? yytranslate[x] : 446)
 
 static const short yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -339,25 +397,26 @@ static const short yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-    86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-    96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-   106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-   116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-   136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-   176,   177,   178,   179,   180
+     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
+     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+   137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+   147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+   167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+   177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+   187,   188,   189,   190,   191
 };
 
 #if YYDEBUG != 0
@@ -366,266 +425,281 @@ static const short yyprhs[] = {     0,
     21,    23,    32,    44,    45,    51,    53,    57,    59,    62,
     64,    71,    75,    82,    83,    90,    91,    99,   101,   108,
    112,   119,   120,   127,   128,   136,   137,   138,   149,   153,
-   157,   161,   164,   166,   167,   170,   171,   174,   176,   179,
-   181,   184,   186,   189,   191,   195,   198,   200,   202,   204,
-   206,   208,   210,   212,   213,   216,   217,   224,   225,   232,
-   234,   236,   237,   238,   244,   245,   251,   253,   255,   256,
-   258,   259,   260,   264,   265,   269,   271,   273,   275,   277,
-   279,   281,   283,   285,   287,   289,   291,   293,   295,   297,
-   299,   301,   303,   304,   312,   313,   322,   324,   328,   329,
-   333,   334,   338,   341,   345,   348,   351,   353,   355,   357,
-   361,   366,   369,   373,   377,   381,   383,   385,   387,   391,
-   393,   395,   399,   404,   407,   411,   415,   419,   421,   425,
-   427,   429,   431,   435,   437,   439,   441,   446,   450,   455,
-   462,   468,   474,   477,   480,   482,   486,   488,   491,   494,
-   497,   500,   503,   506,   509,   512,   514,   516,   526,   527,
-   531,   536,   539,   541,   546,   548,   552,   556,   560,   562,
-   566,   570,   572,   576,   580,   582,   586,   590,   594,   598,
-   600,   604,   608,   610,   614,   616,   620,   622,   626,   628,
-   629,   634,   636,   637,   642,   644,   645,   646,   654,   656,
-   660,   664,   668,   672,   676,   680,   684,   688,   692,   696,
-   700,   702,   706,   707,   709,   711,   713,   715,   717,   721,
-   722,   732,   733,   745,   748,   749,   756,   757,   765,   770,
-   775,   776,   777,   780,   782,   787,   788,   793,   795,   799,
-   804,   806,   810,   812,   814,   816,   818,   820,   823,   826,
-   829,   832,   835,   838,   841,   844,   847,   850,   853,   856,
-   859,   862,   865,   868,   871,   874,   877,   880,   883,   886,
-   889,   892,   895,   898,   901,   904,   907,   910,   913,   916,
-   919,   922,   925,   928,   931,   934,   937,   940,   943,   946,
-   949,   952,   955,   957,   959,   961,   963,   966,   969,   972,
-   975,   978,   981,   984,   987,   990,   993,   996,   999,  1002,
-  1005,  1009,  1011,  1016,  1018,  1022,  1025,  1028,  1031,  1032,
-  1034,  1035,  1036,  1048,  1049,  1050,  1062,  1069,  1076,  1077,
-  1078,  1089,  1090,  1091,  1102,  1108,  1114,  1119,  1124,  1125,
-  1127,  1129,  1132,  1138,  1142,  1145,  1150,  1152,  1155,  1159,
-  1166,  1167,  1176,  1181,  1183,  1187,  1190,  1192,  1197,  1199,
-  1201,  1204,  1207,  1209,  1212,  1214,  1217,  1219,  1221,  1223,
-  1226,  1228,  1231,  1234,  1238,  1240,  1244,  1246,  1250,  1252,
-  1254,  1258,  1259,  1262,  1263,  1268,  1273,  1275,  1277,  1280,
-  1282,  1284,  1287,  1288,  1290,  1296,  1299,  1303,  1307,  1312,
-  1316,  1321,  1326,  1332,  1334,  1336,  1338,  1340,  1342,  1344,
-  1346,  1348,  1350,  1352,  1354,  1356,  1359,  1362,  1370,  1377,
-  1380,  1381,  1382,  1393,  1394,  1401,  1403,  1405,  1407,  1409,
-  1412,  1414,  1416,  1418,  1420,  1422,  1424,  1426,  1430,  1432,
-  1435,  1438,  1441,  1443,  1445,  1447,  1449,  1451,  1453,  1455,
-  1457,  1459,  1461,  1465,  1467,  1469,  1473,  1476,  1477,  1483,
-  1484,  1491,  1492,  1497,  1498,  1504,  1508,  1511,  1515,  1516,
-  1517,  1518,  1519,  1520,  1522,  1525,  1528,  1532,  1535,  1539,
-  1543,  1548,  1551,  1554,  1558,  1562,  1567,  1569,  1572,  1574,
-  1577,  1579,  1582,  1584,  1587,  1589,  1592,  1594,  1599,  1602,
-  1603,  1609,  1610,  1617,  1622,  1627,  1628,  1629,  1640,  1642,
-  1643,  1648,  1650,  1652,  1654,  1656,  1658,  1662,  1664,  1669,
-  1673,  1678,  1685,  1691,  1697,  1700,  1703,  1705,  1708,  1711,
-  1714,  1717,  1720,  1723,  1726,  1729,  1731,  1733,  1738,  1740,
-  1744,  1748,  1752,  1754,  1758,  1762,  1764,  1768,  1772,  1774,
-  1778,  1782,  1786,  1790,  1792,  1796,  1800,  1802,  1806,  1808,
-  1812,  1814,  1818,  1820,  1824,  1826,  1830,  1832,  1833,  1834,
-  1842,  1844,  1848,  1852,  1856,  1860,  1864,  1868,  1872,  1876,
-  1880,  1884,  1888,  1890,  1891,  1893,  1896,  1904,  1907,  1910,
-  1918,  1925,  1928,  1932,  1935,  1939,  1942,  1946,  1950,  1954,
-  1958,  1961,  1965,  1966,  1968,  1970,  1972,  1974,  1976,  1978,
-  1980
+   157,   161,   164,   166,   170,   171,   176,   177,   182,   184,
+   188,   190,   194,   196,   200,   202,   204,   206,   208,   210,
+   212,   217,   223,   225,   227,   229,   231,   235,   240,   243,
+   247,   251,   255,   257,   259,   261,   262,   265,   266,   269,
+   271,   273,   275,   277,   279,   281,   283,   285,   287,   289,
+   291,   293,   296,   297,   302,   304,   307,   308,   312,   314,
+   318,   320,   322,   323,   326,   330,   333,   335,   339,   342,
+   343,   346,   348,   350,   352,   354,   356,   358,   360,   362,
+   364,   366,   368,   370,   372,   374,   376,   378,   382,   383,
+   387,   388,   389,   394,   397,   400,   402,   404,   406,   410,
+   415,   418,   422,   426,   430,   432,   434,   436,   440,   442,
+   444,   448,   453,   456,   460,   464,   468,   469,   471,   473,
+   477,   479,   481,   483,   487,   489,   491,   493,   498,   502,
+   507,   514,   520,   526,   529,   532,   534,   538,   540,   543,
+   546,   549,   552,   555,   558,   561,   564,   566,   568,   572,
+   574,   584,   585,   589,   594,   597,   602,   605,   607,   612,
+   614,   618,   622,   626,   628,   632,   636,   638,   642,   646,
+   648,   652,   656,   660,   664,   666,   670,   674,   676,   680,
+   682,   686,   688,   692,   694,   695,   700,   702,   703,   708,
+   710,   711,   712,   720,   722,   726,   730,   734,   738,   742,
+   746,   750,   754,   758,   762,   766,   768,   772,   773,   775,
+   777,   779,   781,   783,   787,   788,   798,   799,   811,   814,
+   815,   822,   823,   832,   837,   842,   843,   844,   847,   849,
+   854,   855,   860,   862,   866,   871,   873,   877,   879,   881,
+   883,   885,   887,   890,   893,   894,   901,   904,   907,   908,
+   915,   916,   922,   924,   926,   928,   930,   932,   934,   936,
+   938,   940,   942,   944,   946,   948,   950,   952,   954,   956,
+   958,   960,   962,   964,   966,   968,   970,   972,   974,   976,
+   978,   980,   982,   984,   986,   988,   990,   992,   994,   996,
+   998,  1000,  1002,  1004,  1006,  1008,  1010,  1012,  1014,  1016,
+  1018,  1020,  1022,  1024,  1026,  1029,  1032,  1035,  1038,  1041,
+  1044,  1047,  1050,  1053,  1056,  1059,  1062,  1065,  1068,  1071,
+  1074,  1077,  1080,  1083,  1086,  1089,  1092,  1095,  1098,  1101,
+  1105,  1107,  1112,  1114,  1118,  1121,  1124,  1127,  1128,  1130,
+  1131,  1132,  1144,  1145,  1146,  1158,  1165,  1172,  1173,  1174,
+  1185,  1186,  1187,  1198,  1204,  1210,  1215,  1220,  1221,  1223,
+  1225,  1228,  1234,  1238,  1241,  1246,  1248,  1252,  1257,  1264,
+  1265,  1274,  1279,  1281,  1285,  1288,  1290,  1295,  1297,  1299,
+  1302,  1305,  1307,  1310,  1312,  1315,  1317,  1319,  1321,  1324,
+  1326,  1329,  1332,  1336,  1338,  1342,  1344,  1348,  1350,  1352,
+  1356,  1357,  1360,  1361,  1366,  1371,  1373,  1375,  1378,  1380,
+  1382,  1385,  1386,  1388,  1394,  1397,  1401,  1405,  1410,  1414,
+  1419,  1424,  1430,  1432,  1434,  1436,  1438,  1440,  1442,  1444,
+  1446,  1448,  1450,  1452,  1454,  1457,  1460,  1468,  1475,  1478,
+  1479,  1480,  1491,  1492,  1499,  1501,  1503,  1505,  1507,  1510,
+  1512,  1514,  1516,  1518,  1520,  1522,  1524,  1528,  1530,  1533,
+  1536,  1539,  1541,  1543,  1545,  1547,  1549,  1551,  1553,  1555,
+  1557,  1559,  1563,  1565,  1567,  1570,  1573,  1574,  1579,  1580,
+  1586,  1587,  1591,  1592,  1597,  1601,  1604,  1608,  1609,  1610,
+  1611,  1612,  1613,  1615,  1618,  1621,  1625,  1628,  1632,  1636,
+  1641,  1644,  1647,  1651,  1655,  1660,  1662,  1665,  1667,  1670,
+  1672,  1675,  1677,  1680,  1682,  1685,  1687,  1692,  1695,  1696,
+  1702,  1703,  1710,  1715,  1720,  1721,  1722,  1733,  1735,  1736,
+  1741,  1743,  1745,  1747,  1749,  1751,  1754,  1756,  1760,  1762,
+  1767,  1771,  1776,  1783,  1789,  1795,  1798,  1801,  1803,  1806,
+  1809,  1812,  1815,  1818,  1821,  1824,  1827,  1829,  1831,  1836,
+  1838,  1842,  1846,  1850,  1852,  1856,  1860,  1862,  1866,  1870,
+  1872,  1876,  1880,  1884,  1888,  1890,  1894,  1898,  1900,  1904,
+  1906,  1910,  1912,  1916,  1918,  1922,  1924,  1928,  1930,  1931,
+  1932,  1940,  1942,  1946,  1950,  1954,  1958,  1962,  1966,  1970,
+  1974,  1978,  1982,  1986,  1988,  1989,  1991,  1994,  2002,  2005,
+  2008,  2016,  2023,  2026,  2030,  2033,  2037,  2040,  2044,  2048,
+  2052,  2056,  2059,  2063,  2064,  2066,  2068,  2070,  2072,  2074,
+  2076,  2078,  2080
 };
 
 static const short yyrhs[] = {    -1,
-   182,     0,   183,     0,   182,   183,     0,   235,   403,     0,
-   184,     0,   185,     0,   195,     0,   198,     0,   271,     0,
-     1,     0,    74,   291,   304,   314,   304,   403,   279,    87,
-     0,    74,   291,   304,   314,   304,    23,   279,   284,   283,
-   403,    87,     0,     0,    75,   186,   187,   403,    87,     0,
-   188,     0,   291,   304,   188,     0,   192,     0,   318,   192,
-     0,   405,     0,   279,    24,   304,   314,   279,    25,     0,
-   189,    26,    27,     0,   189,    26,   279,   270,    27,   304,
-     0,     0,   189,   280,    24,    25,   190,   200,     0,     0,
-   189,   280,    24,   315,    25,   191,   200,     0,   405,     0,
-   279,    24,   304,   188,   279,    25,     0,   192,    26,    27,
-     0,   192,    26,   279,   270,    27,   304,     0,     0,   192,
-   280,    24,    25,   193,   202,     0,     0,   192,   280,    24,
-   315,    25,   194,   202,     0,     0,     0,    76,   405,    24,
-   315,    25,   196,   202,   197,   403,    87,     0,    88,   344,
-    91,     0,    89,   331,    91,     0,    90,   332,    91,     0,
-    88,    91,     0,   231,     0,     0,   201,   204,     0,     0,
-   203,   205,     0,   212,     0,   206,   212,     0,   215,     0,
-   206,   215,     0,   228,     0,   228,   206,     0,   208,     0,
-   207,    21,   208,     0,   211,   209,     0,   404,     0,   175,
-     0,    85,     0,    86,     0,   115,     0,   116,     0,   129,
-     0,     0,   210,   211,     0,     0,    71,   213,   364,   403,
-    87,   218,     0,     0,    71,   214,   207,   403,    87,   218,
-     0,    73,     0,   219,     0,     0,     0,    71,   216,   364,
-   403,   218,     0,     0,    71,   217,   207,   403,   218,     0,
-    73,     0,   221,     0,     0,   219,     0,     0,     0,    72,
-   220,   236,     0,     0,    72,   222,   237,     0,    77,     0,
-    78,     0,    79,     0,    80,     0,    81,     0,    87,     0,
-    87,     0,    82,     0,    83,     0,   118,     0,   136,     0,
-   134,     0,   132,     0,   131,     0,   120,     0,   137,     0,
-   149,     0,     0,   223,   304,   229,   242,   403,   225,   279,
-     0,     0,   226,   304,   227,   230,   242,   403,   224,   279,
-     0,   314,     0,   291,   304,   314,     0,     0,    19,   233,
-   360,     0,     0,   364,   234,   353,     0,   199,   232,     0,
-   240,   403,    87,     0,   403,    87,     0,   240,   403,     0,
-   403,     0,   404,     0,   175,     0,   238,    26,    27,     0,
-   238,    26,   239,    27,     0,    34,   238,     0,    24,   238,
-    25,     0,   238,    28,   405,     0,   238,    43,   405,     0,
-   238,     0,   176,     0,   238,     0,   240,    21,   238,     0,
-   404,     0,   175,     0,   241,    26,    27,     0,   241,    26,
-   239,    27,     0,    34,   241,     0,    24,   241,    25,     0,
-   241,    28,   405,     0,   241,    43,   405,     0,   241,     0,
-   242,    21,   241,     0,   404,     0,   175,     0,   176,     0,
-    24,   268,    25,     0,   180,     0,   110,     0,   243,     0,
-   244,    26,   268,    27,     0,   244,    24,    25,     0,   244,
-    24,   245,    25,     0,    69,    24,   267,    21,   326,    25,
-     0,   244,   304,    28,   405,   279,     0,   244,   304,    43,
-   405,   279,     0,   244,    46,     0,   244,    47,     0,   267,
-     0,   245,    21,   267,     0,   244,     0,    46,   246,     0,
-    47,   246,     0,    29,   251,     0,    34,   251,     0,    33,
-   251,     0,    32,   251,     0,    31,   251,     0,    30,   251,
-     0,   248,     0,   247,     0,    45,   279,    24,   326,   304,
-    21,   405,    25,   279,     0,     0,   279,   249,   250,     0,
-    42,    24,   326,    25,     0,    42,   246,     0,   246,     0,
-    24,   326,    25,   251,     0,   251,     0,   252,    34,   251,
-     0,   252,    35,   251,     0,   252,    36,   251,     0,   252,
-     0,   253,    33,   252,     0,   253,    32,   252,     0,   253,
-     0,   254,    48,   253,     0,   254,    49,   253,     0,   254,
-     0,   255,    37,   254,     0,   255,    38,   254,     0,   255,
-    50,   254,     0,   255,    51,   254,     0,   255,     0,   256,
-    52,   255,     0,   256,    53,   255,     0,   256,     0,   257,
-    29,   256,     0,   257,     0,   258,    39,   257,     0,   258,
-     0,   259,    40,   258,     0,   259,     0,     0,   260,    54,
-   261,   259,     0,   260,     0,     0,   262,    55,   263,   260,
-     0,   262,     0,     0,     0,   262,    41,   265,   268,    22,
-   266,   264,     0,   264,     0,   246,    23,   267,     0,   246,
-    56,   267,     0,   246,    57,   267,     0,   246,    58,   267,
-     0,   246,    59,   267,     0,   246,    60,   267,     0,   246,
-    61,   267,     0,   246,    62,   267,     0,   246,    63,   267,
-     0,   246,    64,   267,     0,   246,    65,   267,     0,   267,
-     0,   268,    21,   267,     0,     0,   268,     0,   264,     0,
-   272,     0,    70,     0,   277,     0,   291,   279,    18,     0,
-     0,   291,   304,   314,   304,   273,   279,   283,    18,   279,
-     0,     0,   291,   304,   314,   304,    23,   274,   279,   284,
-   283,    18,   279,     0,   314,   304,     0,     0,   314,   304,
-    23,   276,   279,   284,     0,     0,    44,   291,   278,   304,
-   281,   279,    18,     0,    44,   291,   279,    18,     0,    44,
-   281,   279,    18,     0,     0,     0,   282,   279,     0,   275,
-     0,   281,    21,   304,   275,     0,     0,   283,    21,   304,
-   275,     0,   267,     0,    19,   285,    20,     0,    19,   285,
-    21,    20,     0,   284,     0,   285,    21,   284,     0,   111,
-     0,   109,     0,   112,     0,   113,     0,   114,     0,   107,
-   279,     0,   108,   279,     0,   115,   279,     0,   116,   279,
-     0,   129,   279,     0,   130,   279,     0,   131,   279,     0,
-   132,   279,     0,   117,   279,     0,   119,   279,     0,   118,
-   279,     0,   127,   279,     0,   128,   279,     0,   120,   279,
-     0,   122,   279,     0,   138,   279,     0,   139,   279,     0,
-   141,   279,     0,   142,   279,     0,   140,   279,     0,   135,
-   279,     0,   150,   279,     0,   133,   279,     0,   134,   279,
-     0,   136,   279,     0,   123,   279,     0,   126,   279,     0,
-   124,   279,     0,   125,   279,     0,   155,   279,     0,   156,
-   279,     0,   147,   279,     0,   157,   279,     0,   148,   279,
-     0,   151,   279,     0,   152,   279,     0,   153,   279,     0,
-   154,   279,     0,   149,   279,     0,   158,   279,     0,   159,
-   279,     0,   162,   279,     0,   163,   279,     0,   160,   279,
-     0,   161,   279,     0,   146,     0,   143,     0,   144,     0,
-   145,     0,   164,   304,     0,   166,   304,     0,   165,   304,
-     0,   167,   304,     0,   168,   304,     0,   169,   304,     0,
-   170,   304,     0,   171,   304,     0,   172,   304,     0,   173,
-   304,     0,   406,   304,     0,   295,   304,     0,   309,   304,
-     0,   288,   304,     0,   279,   291,   279,     0,   293,     0,
-   293,    84,   292,    87,     0,   326,     0,   326,    21,   292,
-     0,   286,   294,     0,   287,   294,     0,   289,   294,     0,
-     0,   291,     0,     0,     0,   304,    66,   405,   279,    19,
-   296,   357,   305,   358,   297,    20,     0,     0,     0,   304,
-    67,   405,   279,    19,   298,   357,   305,   358,   299,    20,
-     0,   304,    66,   405,   279,    19,    20,     0,   304,    67,
-   405,   279,    19,    20,     0,     0,     0,   304,    66,   279,
-    19,   300,   357,   305,   358,   301,    20,     0,     0,     0,
-   304,    67,   279,    19,   302,   357,   305,   358,   303,    20,
-     0,   304,    66,   279,    19,    20,     0,   304,    67,   279,
-    19,    20,     0,   304,    66,   405,   304,     0,   304,    67,
-   405,   304,     0,     0,   306,     0,   198,     0,   305,   306,
-     0,   291,   304,   307,   279,    18,     0,   291,   279,    18,
-     0,   308,   304,     0,   307,    21,   308,   304,     0,   314,
-     0,    22,   270,     0,   314,    22,   270,     0,   304,    68,
-    19,   311,    20,   279,     0,     0,   304,    68,   405,    19,
-   310,   311,    20,   279,     0,   304,    68,   405,   279,     0,
-   312,     0,   311,    21,   312,     0,   311,    21,     0,   405,
-     0,   405,    23,   279,   270,     0,   189,     0,   328,     0,
-   318,   179,     0,   318,   313,     0,   189,     0,   318,   189,
-     0,   321,     0,   304,   319,     0,   107,     0,   108,     0,
-   316,     0,   317,   316,     0,    34,     0,    34,   317,     0,
-    34,   318,     0,    34,   317,   318,     0,   320,     0,   320,
-    21,     5,     0,   405,     0,   320,    21,   405,     0,     5,
-     0,   322,     0,   322,    21,     5,     0,     0,   323,   325,
-     0,     0,   322,    21,   324,   325,     0,   279,   291,   313,
-   279,     0,   405,     0,   290,     0,   290,   327,     0,   318,
-     0,   329,     0,   318,   329,     0,     0,   329,     0,   279,
-    24,   304,   327,    25,     0,    26,    27,     0,    26,   270,
-    27,     0,   329,    26,    27,     0,   329,    26,   270,    27,
-     0,   279,    24,    25,     0,   279,    24,   321,    25,     0,
-   329,   279,    24,    25,     0,   329,   279,    24,   321,    25,
-     0,   346,     0,   347,     0,   350,     0,   353,     0,   366,
-     0,   369,     0,   400,     0,   374,     0,   402,     0,   333,
-     0,   331,     0,   340,     0,   333,   340,     0,   373,   333,
-     0,   399,   345,    11,    24,   268,    25,    18,     0,   399,
-   345,    11,    24,   268,    25,     0,   335,   340,     0,     0,
-     0,    13,    24,   269,    18,   269,    18,   336,   269,   337,
-    25,     0,     0,   177,   355,    24,   339,   377,    25,     0,
-   178,     0,   346,     0,   347,     0,   350,     0,   342,   364,
-     0,   342,     0,   343,     0,   366,     0,   341,     0,   334,
-     0,   338,     0,   402,     0,    24,   340,    25,     0,     1,
-     0,   368,   340,     0,   355,    19,     0,   359,    20,     0,
-   345,     0,   363,     0,   346,     0,   347,     0,   350,     0,
-   354,     0,   367,     0,   369,     0,   374,     0,   401,     0,
-    24,   345,    25,     0,   402,     0,     1,     0,   405,    22,
-   330,     0,   106,   330,     0,     0,     6,   270,   348,    22,
-   330,     0,     0,    97,     6,   270,   349,    22,   330,     0,
-     0,     7,   351,    22,   330,     0,     0,    97,     7,   352,
-    22,   330,     0,    24,   353,    25,     0,   355,   361,     0,
-   355,   362,   356,     0,     0,     0,     0,     0,     0,    20,
-     0,   106,    20,     0,   365,    20,     0,   365,   106,    20,
-     0,   364,    20,     0,   364,   106,    20,     0,   364,   365,
-    20,     0,   364,   365,   106,    20,     0,    19,   360,     0,
-    19,    20,     0,    19,   363,    20,     0,    19,   364,    20,
-     0,    19,   364,   365,    20,     0,   345,     0,   363,   345,
-     0,   271,     0,   364,   271,     0,   330,     0,   365,   330,
-     0,    18,     0,   268,    18,     0,    18,     0,   268,    18,
-     0,   268,     0,     8,    24,   268,    25,     0,   368,   330,
-     0,     0,   368,   330,     9,   370,   330,     0,     0,    10,
-    24,   268,   371,    25,   330,     0,    11,    24,   268,    25,
-     0,    11,    24,   268,    25,     0,     0,     0,   177,   375,
-   355,    24,   376,   377,    25,   353,   398,   356,     0,   379,
-     0,     0,   377,   378,    21,   379,     0,   397,     0,   404,
-     0,   180,     0,   175,     0,   176,     0,    24,   268,    25,
-     0,   380,     0,   244,    26,   268,    27,     0,   244,    24,
-    25,     0,   244,    24,   245,    25,     0,    69,    24,   267,
-    21,   326,    25,     0,   244,   304,    28,   405,   279,     0,
-   244,   304,    43,   405,   279,     0,   244,    46,     0,   244,
-    47,     0,   381,     0,    46,   246,     0,    47,   246,     0,
-    29,   251,     0,    34,   251,     0,    33,   251,     0,    32,
-   251,     0,    31,   251,     0,    30,   251,     0,   248,     0,
-   382,     0,    24,   326,    25,   251,     0,   383,     0,   252,
-    34,   251,     0,   252,    35,   251,     0,   252,    36,   251,
-     0,   384,     0,   253,    33,   252,     0,   253,    32,   252,
-     0,   385,     0,   254,    48,   253,     0,   254,    49,   253,
-     0,   386,     0,   255,    37,   254,     0,   255,    38,   254,
-     0,   255,    50,   254,     0,   255,    51,   254,     0,   387,
-     0,   256,    52,   255,     0,   256,    53,   255,     0,   388,
-     0,   257,    29,   256,     0,   389,     0,   258,    39,   257,
-     0,   390,     0,   259,    40,   258,     0,   391,     0,   260,
-    54,   259,     0,   392,     0,   262,    55,   260,     0,   393,
-     0,     0,     0,   262,    41,   395,   268,    22,   396,   264,
-     0,   394,     0,   246,    23,   267,     0,   246,    56,   267,
-     0,   246,    57,   267,     0,   246,    58,   267,     0,   246,
-    59,   267,     0,   246,    60,   267,     0,   246,    61,   267,
-     0,   246,    62,   267,     0,   246,    63,   267,     0,   246,
-    64,   267,     0,   246,    65,   267,     0,   178,     0,     0,
-    12,     0,   372,   330,     0,   399,   330,    11,    24,   268,
-    25,    18,     0,   335,   330,     0,   372,   345,     0,   399,
-   345,    11,    24,   268,    25,    18,     0,   399,   345,    11,
-    24,   268,    25,     0,   335,   345,     0,    14,   405,    18,
-     0,    15,    18,     0,    96,    15,    18,     0,    16,    18,
-     0,    92,    16,    18,     0,    93,    16,    18,     0,    94,
-    16,    18,     0,    95,    16,    18,     0,    17,    18,     0,
-    17,   268,    18,     0,     0,    18,     0,   174,     0,   175,
-     0,   177,     0,   178,     0,   174,     0,   179,     0,   180,
+   193,     0,   194,     0,   193,   194,     0,   254,   442,     0,
+   195,     0,   196,     0,   206,     0,   209,     0,   291,     0,
+     1,     0,    76,   329,   342,   352,   342,   442,   299,    89,
+     0,    76,   329,   342,   352,   342,    23,   299,   304,   303,
+   442,    89,     0,     0,    77,   197,   198,   442,    89,     0,
+   199,     0,   329,   342,   199,     0,   203,     0,   356,   203,
+     0,   444,     0,   299,    24,   342,   352,   299,    25,     0,
+   200,    26,    27,     0,   200,    26,   299,   290,    27,   342,
+     0,     0,   200,   300,    24,    25,   201,   226,     0,     0,
+   200,   300,    24,   353,    25,   202,   226,     0,   444,     0,
+   299,    24,   342,   199,   299,    25,     0,   203,    26,    27,
+     0,   203,    26,   299,   290,    27,   342,     0,     0,   203,
+   300,    24,    25,   204,   227,     0,     0,   203,   300,    24,
+   353,    25,   205,   227,     0,     0,     0,    78,   444,    24,
+   353,    25,   207,   227,   208,   442,    89,     0,    90,   382,
+    93,     0,    91,   369,    93,     0,    92,   370,    93,     0,
+    90,    93,     0,   249,     0,   212,    23,   215,     0,     0,
+   223,   213,    22,   216,     0,     0,     5,   214,    22,   216,
+     0,   212,     0,   212,    40,   215,     0,   191,     0,   218,
+   182,   217,     0,   218,     0,   221,   220,   221,     0,   179,
+     0,   180,     0,    52,     0,    51,     0,    53,     0,   222,
+     0,   224,    24,   221,    25,     0,    24,   221,   225,   221,
+    25,     0,   223,     0,   187,     0,   443,     0,   184,     0,
+   223,    26,    27,     0,   223,    26,   187,    27,     0,    34,
+   223,     0,    24,   223,    25,     0,   223,    28,   444,     0,
+   223,    44,   444,     0,   219,     0,    33,     0,    32,     0,
+     0,   228,   226,     0,     0,   229,   227,     0,   230,     0,
+   234,     0,   233,     0,   307,     0,   310,     0,   240,     0,
+   231,     0,   235,     0,   233,     0,   308,     0,   312,     0,
+   241,     0,   231,    89,     0,     0,    73,   232,   242,   442,
+     0,    75,     0,   235,    89,     0,     0,    74,   236,   255,
+     0,   238,     0,   238,    40,   237,     0,   184,     0,   240,
+     0,     0,   241,    89,     0,    72,   237,   418,     0,    72,
+   237,     0,   243,     0,   242,    21,   243,     0,   244,   245,
+     0,     0,   246,   244,     0,   443,     0,   184,     0,   291,
+     0,    87,     0,    88,     0,   117,     0,   118,     0,   131,
+     0,    79,     0,    80,     0,    81,     0,    82,     0,    83,
+     0,    84,     0,    85,     0,   352,     0,   329,   342,   352,
+     0,     0,    19,   251,   398,     0,     0,     0,   252,   402,
+   253,   391,     0,   210,   250,     0,   258,   442,     0,   442,
+     0,   443,     0,   184,     0,   256,    26,    27,     0,   256,
+    26,   257,    27,     0,    34,   256,     0,    24,   256,    25,
+     0,   256,    28,   444,     0,   256,    44,   444,     0,   256,
+     0,   418,     0,   256,     0,   258,    21,   256,     0,   443,
+     0,   184,     0,   259,    26,    27,     0,   259,    26,   257,
+    27,     0,    34,   259,     0,    24,   259,    25,     0,   259,
+    28,   444,     0,   259,    44,   444,     0,     0,   261,     0,
+   259,     0,   261,    21,   259,     0,   443,     0,   184,     0,
+   418,     0,    24,   288,    25,     0,   185,     0,   112,     0,
+   262,     0,   263,    26,   288,    27,     0,   263,    24,    25,
+     0,   263,    24,   264,    25,     0,    70,    24,   287,    21,
+   364,    25,     0,   263,   342,    28,   444,   299,     0,   263,
+   342,    44,   444,   299,     0,   263,    47,     0,   263,    48,
+     0,   287,     0,   264,    21,   287,     0,   263,     0,    47,
+   265,     0,    48,   265,     0,    29,   271,     0,    34,   271,
+     0,    33,   271,     0,    32,   271,     0,    31,   271,     0,
+    30,   271,     0,   268,     0,   267,     0,   266,    28,   444,
+     0,   444,     0,    46,   299,    24,   364,   342,    21,   266,
+    25,   299,     0,     0,   299,   269,   270,     0,    42,    24,
+   364,    25,     0,    42,   265,     0,    43,    24,   364,    25,
+     0,    43,   265,     0,   265,     0,    24,   364,    25,   271,
+     0,   271,     0,   272,    34,   271,     0,   272,    35,   271,
+     0,   272,    36,   271,     0,   272,     0,   273,    33,   272,
+     0,   273,    32,   272,     0,   273,     0,   274,    49,   273,
+     0,   274,    50,   273,     0,   274,     0,   275,    37,   274,
+     0,   275,    38,   274,     0,   275,    51,   274,     0,   275,
+    52,   274,     0,   275,     0,   276,    53,   275,     0,   276,
+    54,   275,     0,   276,     0,   277,    29,   276,     0,   277,
+     0,   278,    39,   277,     0,   278,     0,   279,    40,   278,
+     0,   279,     0,     0,   280,    55,   281,   279,     0,   280,
+     0,     0,   282,    56,   283,   280,     0,   282,     0,     0,
+     0,   282,    41,   285,   288,    22,   286,   284,     0,   284,
+     0,   265,    23,   287,     0,   265,    57,   287,     0,   265,
+    58,   287,     0,   265,    59,   287,     0,   265,    60,   287,
+     0,   265,    61,   287,     0,   265,    62,   287,     0,   265,
+    63,   287,     0,   265,    64,   287,     0,   265,    65,   287,
+     0,   265,    66,   287,     0,   287,     0,   288,    21,   287,
+     0,     0,   288,     0,   284,     0,   292,     0,    71,     0,
+   297,     0,   329,   299,    18,     0,     0,   329,   342,   352,
+   342,   293,   299,   303,    18,   299,     0,     0,   329,   342,
+   352,   342,    23,   294,   299,   304,   303,    18,   299,     0,
+   352,   342,     0,     0,   352,   342,    23,   296,   299,   304,
+     0,     0,    45,   329,   298,   342,   301,   299,   239,    18,
+     0,    45,   329,   299,    18,     0,    45,   301,   299,    18,
+     0,     0,     0,   302,   299,     0,   295,     0,   301,    21,
+   342,   295,     0,     0,   303,    21,   342,   295,     0,   287,
+     0,    19,   305,    20,     0,    19,   305,    21,    20,     0,
+   304,     0,   305,    21,   304,     0,   113,     0,   111,     0,
+   114,     0,   115,     0,   116,     0,   176,   299,     0,   308,
+    89,     0,     0,   247,   342,   309,   261,   442,   299,     0,
+   312,    89,     0,   248,   342,     0,     0,   311,   318,   313,
+   260,   442,   299,     0,     0,   311,   314,   315,   442,   299,
+     0,   217,     0,   211,     0,   140,     0,   141,     0,   143,
+     0,   144,     0,   142,     0,   125,     0,   128,     0,   126,
+     0,   127,     0,   133,     0,   134,     0,   119,     0,   121,
+     0,   120,     0,   129,     0,   130,     0,   122,     0,   124,
+     0,   137,     0,   139,     0,   152,     0,   151,     0,   136,
+     0,   138,     0,   176,     0,   186,     0,   135,     0,   150,
+     0,   149,     0,   159,     0,   157,     0,   158,     0,   153,
+     0,   154,     0,   155,     0,   156,     0,   160,     0,   161,
+     0,   164,     0,   165,     0,   162,     0,   163,     0,   148,
+     0,   145,     0,   146,     0,   147,     0,   117,     0,   118,
+     0,   131,     0,   132,     0,   109,   299,     0,   110,   299,
+     0,   325,   299,     0,   318,   299,     0,   316,   299,     0,
+   319,   299,     0,   317,   299,     0,   321,   299,     0,   320,
+   299,     0,   322,   299,     0,   323,   299,     0,   166,   342,
+     0,   168,   342,     0,   167,   342,     0,   169,   342,     0,
+   170,   342,     0,   171,   342,     0,   172,   342,     0,   173,
+   342,     0,   174,   342,     0,   175,   342,     0,   445,   342,
+     0,   333,   342,     0,   347,   342,     0,   324,   342,     0,
+   299,   329,   299,     0,   331,     0,   331,    86,   330,    89,
+     0,   364,     0,   364,    21,   330,     0,   306,   332,     0,
+   326,   332,     0,   327,   332,     0,     0,   329,     0,     0,
+     0,   342,    67,   444,   299,    19,   334,   395,   343,   396,
+   335,    20,     0,     0,     0,   342,    68,   444,   299,    19,
+   336,   395,   343,   396,   337,    20,     0,   342,    67,   444,
+   299,    19,    20,     0,   342,    68,   444,   299,    19,    20,
+     0,     0,     0,   342,    67,   299,    19,   338,   395,   343,
+   396,   339,    20,     0,     0,     0,   342,    68,   299,    19,
+   340,   395,   343,   396,   341,    20,     0,   342,    67,   299,
+    19,    20,     0,   342,    68,   299,    19,    20,     0,   342,
+    67,   444,   342,     0,   342,    68,   444,   342,     0,     0,
+   344,     0,   209,     0,   343,   344,     0,   329,   342,   345,
+   299,    18,     0,   329,   299,    18,     0,   346,   342,     0,
+   345,    21,   346,   342,     0,   352,     0,    22,   299,   290,
+     0,   352,    22,   299,   290,     0,   342,    69,    19,   349,
+    20,   299,     0,     0,   342,    69,   444,    19,   348,   349,
+    20,   299,     0,   342,    69,   444,   299,     0,   350,     0,
+   349,    21,   350,     0,   349,    21,     0,   444,     0,   444,
+    23,   299,   290,     0,   200,     0,   366,     0,   356,   190,
+     0,   356,   351,     0,   200,     0,   356,   200,     0,   359,
+     0,   342,   357,     0,   109,     0,   110,     0,   354,     0,
+   355,   354,     0,    34,     0,    34,   355,     0,    34,   356,
+     0,    34,   355,   356,     0,   358,     0,   358,    21,     5,
+     0,   444,     0,   358,    21,   444,     0,     5,     0,   360,
+     0,   360,    21,     5,     0,     0,   361,   363,     0,     0,
+   360,    21,   362,   363,     0,   299,   329,   351,   299,     0,
+   444,     0,   328,     0,   328,   365,     0,   356,     0,   367,
+     0,   356,   367,     0,     0,   367,     0,   299,    24,   342,
+   365,    25,     0,    26,    27,     0,    26,   290,    27,     0,
+   367,    26,    27,     0,   367,    26,   290,    27,     0,   299,
+    24,    25,     0,   299,    24,   359,    25,     0,   367,   299,
+    24,    25,     0,   367,   299,    24,   359,    25,     0,   384,
+     0,   385,     0,   388,     0,   391,     0,   404,     0,   407,
+     0,   439,     0,   412,     0,   441,     0,   371,     0,   369,
+     0,   378,     0,   371,   378,     0,   411,   371,     0,   438,
+   383,    11,    24,   288,    25,    18,     0,   438,   383,    11,
+    24,   288,    25,     0,   373,   378,     0,     0,     0,    13,
+    24,   289,    18,   289,    18,   374,   289,   375,    25,     0,
+     0,   188,   393,    24,   377,   415,    25,     0,   189,     0,
+   384,     0,   385,     0,   388,     0,   380,   402,     0,   380,
+     0,   381,     0,   404,     0,   379,     0,   372,     0,   376,
+     0,   441,     0,    24,   378,    25,     0,     1,     0,   406,
+   378,     0,   393,    19,     0,   397,    20,     0,   383,     0,
+   401,     0,   384,     0,   385,     0,   388,     0,   392,     0,
+   405,     0,   407,     0,   412,     0,   440,     0,    24,   383,
+    25,     0,   441,     0,     1,     0,   444,    22,     0,   108,
+   368,     0,     0,     6,   290,   386,    22,     0,     0,    99,
+     6,   290,   387,    22,     0,     0,     7,   389,    22,     0,
+     0,    99,     7,   390,    22,     0,    24,   391,    25,     0,
+   393,   399,     0,   393,   400,   394,     0,     0,     0,     0,
+     0,     0,    20,     0,   108,    20,     0,   403,    20,     0,
+   403,   108,    20,     0,   402,    20,     0,   402,   108,    20,
+     0,   402,   403,    20,     0,   402,   403,   108,    20,     0,
+    19,   398,     0,    19,    20,     0,    19,   401,    20,     0,
+    19,   402,    20,     0,    19,   402,   403,    20,     0,   383,
+     0,   401,   383,     0,   291,     0,   402,   291,     0,   368,
+     0,   403,   368,     0,    18,     0,   288,    18,     0,    18,
+     0,   288,    18,     0,   288,     0,     8,    24,   288,    25,
+     0,   406,   368,     0,     0,   406,   368,     9,   408,   368,
+     0,     0,    10,    24,   288,   409,    25,   368,     0,    11,
+    24,   288,    25,     0,    11,    24,   288,    25,     0,     0,
+     0,   188,   413,   393,    24,   414,   415,    25,   391,   437,
+   394,     0,   417,     0,     0,   415,   416,    21,   417,     0,
+   436,     0,   443,     0,   185,     0,   184,     0,   187,     0,
+   418,   187,     0,   418,     0,    24,   288,    25,     0,   419,
+     0,   263,    26,   288,    27,     0,   263,    24,    25,     0,
+   263,    24,   264,    25,     0,    70,    24,   287,    21,   364,
+    25,     0,   263,   342,    28,   444,   299,     0,   263,   342,
+    44,   444,   299,     0,   263,    47,     0,   263,    48,     0,
+   420,     0,    47,   265,     0,    48,   265,     0,    29,   271,
+     0,    34,   271,     0,    33,   271,     0,    32,   271,     0,
+    31,   271,     0,    30,   271,     0,   268,     0,   421,     0,
+    24,   364,    25,   271,     0,   422,     0,   272,    34,   271,
+     0,   272,    35,   271,     0,   272,    36,   271,     0,   423,
+     0,   273,    33,   272,     0,   273,    32,   272,     0,   424,
+     0,   274,    49,   273,     0,   274,    50,   273,     0,   425,
+     0,   275,    37,   274,     0,   275,    38,   274,     0,   275,
+    51,   274,     0,   275,    52,   274,     0,   426,     0,   276,
+    53,   275,     0,   276,    54,   275,     0,   427,     0,   277,
+    29,   276,     0,   428,     0,   278,    39,   277,     0,   429,
+     0,   279,    40,   278,     0,   430,     0,   280,    55,   279,
+     0,   431,     0,   282,    56,   280,     0,   432,     0,     0,
+     0,   282,    41,   434,   288,    22,   435,   284,     0,   433,
+     0,   265,    23,   287,     0,   265,    57,   287,     0,   265,
+    58,   287,     0,   265,    59,   287,     0,   265,    60,   287,
+     0,   265,    61,   287,     0,   265,    62,   287,     0,   265,
+    63,   287,     0,   265,    64,   287,     0,   265,    65,   287,
+     0,   265,    66,   287,     0,   189,     0,     0,    12,     0,
+   410,   368,     0,   438,   368,    11,    24,   288,    25,    18,
+     0,   373,   368,     0,   410,   383,     0,   438,   383,    11,
+    24,   288,    25,    18,     0,   438,   383,    11,    24,   288,
+    25,     0,   373,   383,     0,    14,   444,    18,     0,    15,
+    18,     0,    98,    15,    18,     0,    16,    18,     0,    94,
+    16,    18,     0,    95,    16,    18,     0,    96,    16,    18,
+     0,    97,    16,    18,     0,    17,    18,     0,    17,   288,
+    18,     0,     0,    18,     0,   183,     0,   184,     0,   188,
+     0,   189,     0,   443,     0,   185,     0,   190,     0,   185,
      0
 };
 
@@ -633,69 +707,74 @@ static const short yyrhs[] = {    -1,
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   215,   216,   219,   220,   223,   224,   225,   226,   227,   228,
-   229,   232,   234,   238,   238,   243,   249,   253,   254,   258,
-   259,   261,   263,   279,   283,   290,   294,   300,   301,   303,
-   305,   321,   325,   332,   336,   342,   344,   344,   348,   349,
-   350,   351,   354,   357,   358,   361,   362,   365,   366,   369,
-   370,   373,   374,   377,   378,   381,   384,   385,   388,   389,
-   390,   391,   392,   395,   396,   399,   399,   402,   402,   405,
-   409,   410,   413,   413,   416,   416,   419,   423,   424,   427,
-   428,   431,   437,   444,   450,   457,   458,   459,   460,   461,
-   464,   467,   470,   471,   474,   475,   476,   477,   478,   479,
-   480,   481,   484,   490,   497,   503,   512,   518,   522,   524,
-   528,   531,   538,   546,   547,   550,   551,   554,   555,   556,
-   557,   558,   559,   560,   561,   565,   566,   570,   571,   574,
-   576,   578,   579,   580,   581,   582,   584,   588,   592,   604,
-   605,   606,   607,   608,   609,   612,   613,   614,   615,   616,
-   617,   618,   619,   620,   623,   624,   627,   628,   629,   630,
-   631,   632,   633,   634,   635,   636,   637,   640,   644,   645,
-   648,   649,   652,   653,   657,   658,   659,   660,   663,   664,
-   665,   668,   669,   670,   673,   674,   675,   676,   677,   680,
-   681,   682,   685,   686,   689,   690,   694,   695,   698,   699,
-   704,   710,   711,   717,   723,   724,   724,   726,   729,   730,
-   731,   732,   733,   734,   735,   736,   737,   738,   739,   740,
-   743,   744,   747,   748,   751,   756,   757,   758,   761,   774,
-   778,   779,   782,   787,   788,   788,   793,   794,   795,   796,
-   799,   802,   805,   808,   809,   812,   813,   816,   817,   818,
-   822,   824,   833,   834,   835,   836,   837,   840,   841,   842,
-   843,   844,   845,   846,   847,   848,   849,   850,   851,   852,
-   853,   854,   855,   856,   857,   858,   859,   860,   861,   862,
-   863,   864,   865,   866,   867,   868,   869,   870,   871,   872,
-   873,   874,   875,   876,   877,   878,   879,   880,   881,   882,
-   883,   884,   887,   888,   889,   890,   893,   894,   895,   896,
-   897,   898,   899,   900,   901,   902,   903,   904,   905,   906,
-   909,   913,   914,   918,   919,   923,   924,   925,   928,   929,
-   932,   934,   936,   937,   939,   941,   942,   944,   946,   948,
-   950,   951,   953,   955,   956,   958,   960,   961,   964,   967,
-   968,   969,   972,   974,   978,   980,   984,   985,   986,   989,
-   991,   991,   993,   996,   998,  1000,  1003,  1008,  1015,  1016,
-  1017,  1024,  1028,  1029,  1033,  1034,  1037,  1038,  1041,  1042,
-  1045,  1046,  1047,  1048,  1051,  1052,  1055,  1056,  1059,  1060,
-  1061,  1064,  1064,  1065,  1066,  1069,  1081,  1097,  1098,  1101,
-  1102,  1103,  1106,  1107,  1110,  1112,  1113,  1114,  1115,  1116,
-  1118,  1120,  1122,  1128,  1129,  1130,  1131,  1132,  1133,  1134,
-  1135,  1136,  1139,  1142,  1145,  1146,  1150,  1152,  1154,  1156,
-  1160,  1161,  1163,  1167,  1169,  1171,  1174,  1175,  1176,  1177,
-  1178,  1179,  1180,  1181,  1182,  1183,  1184,  1185,  1186,  1189,
-  1195,  1198,  1201,  1202,  1205,  1206,  1207,  1208,  1209,  1210,
-  1211,  1212,  1213,  1214,  1215,  1218,  1219,  1225,  1226,  1227,
-  1228,  1231,  1232,  1233,  1234,  1237,  1238,  1242,  1245,  1248,
-  1251,  1254,  1257,  1260,  1261,  1262,  1263,  1265,  1266,  1268,
-  1270,  1277,  1281,  1283,  1285,  1287,  1291,  1292,  1295,  1296,
-  1299,  1300,  1303,  1304,  1307,  1308,  1309,  1312,  1320,  1325,
-  1326,  1330,  1331,  1334,  1339,  1342,  1343,  1344,  1352,  1353,
-  1353,  1357,  1358,  1359,  1370,  1377,  1378,  1381,  1382,  1383,
-  1384,  1385,  1387,  1388,  1389,  1390,  1393,  1394,  1395,  1396,
-  1397,  1398,  1399,  1400,  1401,  1402,  1405,  1406,  1409,  1410,
-  1411,  1412,  1415,  1416,  1417,  1420,  1421,  1422,  1425,  1426,
-  1427,  1428,  1429,  1432,  1433,  1434,  1437,  1438,  1441,  1442,
-  1446,  1447,  1450,  1451,  1454,  1455,  1458,  1459,  1460,  1461,
-  1464,  1465,  1466,  1467,  1468,  1469,  1470,  1471,  1472,  1473,
-  1474,  1475,  1478,  1479,  1482,  1485,  1487,  1489,  1493,  1494,
-  1496,  1498,  1501,  1502,  1503,  1505,  1506,  1507,  1508,  1509,
-  1510,  1511,  1514,  1515,  1518,  1521,  1522,  1523,  1524,  1527,
-  1528
+   313,   314,   317,   318,   321,   322,   323,   324,   325,   326,
+   327,   330,   332,   336,   336,   343,   349,   353,   354,   358,
+   359,   361,   363,   375,   378,   388,   391,   399,   400,   402,
+   404,   420,   423,   431,   434,   442,   444,   444,   448,   449,
+   450,   451,   454,   457,   461,   461,   464,   464,   469,   470,
+   473,   478,   479,   482,   487,   488,   491,   492,   493,   496,
+   497,   498,   503,   504,   507,   509,   511,   513,   522,   524,
+   526,   528,   544,   548,   549,   556,   557,   565,   567,   571,
+   572,   573,   574,   575,   576,   579,   580,   581,   582,   583,
+   584,   587,   590,   591,   598,   601,   604,   610,   618,   620,
+   624,   627,   628,   631,   634,   640,   644,   645,   648,   651,
+   652,   655,   656,   657,   660,   661,   662,   663,   664,   667,
+   668,   669,   670,   671,   674,   675,   678,   684,   688,   690,
+   694,   695,   697,   704,   714,   715,   718,   719,   720,   721,
+   722,   723,   724,   725,   729,   730,   734,   735,   738,   740,
+   742,   743,   744,   745,   746,   748,   752,   753,   756,   760,
+   772,   773,   774,   775,   776,   777,   780,   781,   782,   783,
+   784,   785,   786,   787,   788,   791,   792,   795,   796,   797,
+   798,   799,   800,   801,   802,   803,   804,   805,   808,   809,
+   812,   816,   817,   820,   821,   822,   823,   826,   827,   831,
+   832,   833,   834,   837,   838,   839,   842,   843,   844,   847,
+   848,   849,   850,   851,   854,   855,   856,   859,   860,   863,
+   864,   868,   869,   872,   873,   878,   884,   885,   891,   897,
+   898,   898,   900,   903,   904,   905,   906,   907,   908,   909,
+   910,   911,   912,   913,   914,   917,   918,   921,   922,   925,
+   930,   931,   932,   935,   949,   954,   960,   962,   968,   973,
+   973,   977,   978,   980,   981,   984,   987,   990,   993,   994,
+   997,   998,  1001,  1002,  1003,  1007,  1009,  1018,  1019,  1020,
+  1021,  1022,  1024,  1028,  1031,  1037,  1046,  1049,  1052,  1059,
+  1066,  1072,  1097,  1098,  1101,  1102,  1103,  1104,  1105,  1108,
+  1109,  1110,  1111,  1114,  1115,  1116,  1117,  1118,  1119,  1120,
+  1121,  1122,  1123,  1124,  1125,  1126,  1127,  1128,  1129,  1130,
+  1134,  1135,  1138,  1139,  1142,  1143,  1146,  1147,  1148,  1149,
+  1152,  1153,  1154,  1155,  1156,  1157,  1160,  1161,  1162,  1163,
+  1166,  1167,  1168,  1169,  1172,  1173,  1174,  1175,  1176,  1177,
+  1178,  1179,  1180,  1181,  1182,  1189,  1190,  1191,  1192,  1193,
+  1194,  1195,  1196,  1197,  1198,  1199,  1200,  1201,  1202,  1205,
+  1209,  1210,  1214,  1215,  1219,  1220,  1221,  1224,  1225,  1228,
+  1230,  1232,  1233,  1235,  1237,  1238,  1240,  1242,  1244,  1246,
+  1247,  1248,  1251,  1252,  1254,  1256,  1257,  1260,  1263,  1264,
+  1265,  1268,  1270,  1274,  1276,  1280,  1281,  1282,  1286,  1288,
+  1288,  1290,  1293,  1295,  1297,  1300,  1305,  1312,  1313,  1314,
+  1321,  1325,  1326,  1330,  1331,  1334,  1335,  1338,  1339,  1342,
+  1343,  1344,  1345,  1348,  1349,  1352,  1353,  1356,  1357,  1358,
+  1361,  1361,  1362,  1363,  1366,  1378,  1394,  1395,  1398,  1399,
+  1400,  1403,  1404,  1407,  1409,  1410,  1412,  1413,  1415,  1417,
+  1419,  1421,  1427,  1428,  1429,  1430,  1431,  1432,  1433,  1434,
+  1435,  1450,  1453,  1456,  1457,  1461,  1463,  1465,  1467,  1471,
+  1472,  1474,  1478,  1480,  1482,  1485,  1486,  1487,  1488,  1489,
+  1490,  1491,  1492,  1493,  1494,  1495,  1496,  1497,  1500,  1506,
+  1509,  1512,  1513,  1516,  1517,  1518,  1519,  1520,  1521,  1522,
+  1523,  1524,  1525,  1526,  1529,  1530,  1536,  1537,  1538,  1539,
+  1542,  1543,  1544,  1545,  1548,  1549,  1553,  1556,  1559,  1562,
+  1565,  1568,  1571,  1572,  1573,  1574,  1576,  1577,  1579,  1581,
+  1587,  1591,  1593,  1595,  1597,  1601,  1602,  1605,  1606,  1609,
+  1610,  1613,  1614,  1617,  1618,  1619,  1622,  1630,  1635,  1636,
+  1640,  1641,  1644,  1649,  1652,  1653,  1654,  1662,  1663,  1663,
+  1667,  1668,  1669,  1680,  1687,  1688,  1691,  1692,  1695,  1696,
+  1697,  1698,  1699,  1701,  1702,  1703,  1704,  1707,  1708,  1709,
+  1710,  1711,  1712,  1713,  1714,  1715,  1716,  1719,  1720,  1723,
+  1724,  1725,  1726,  1729,  1730,  1731,  1734,  1735,  1736,  1739,
+  1740,  1741,  1742,  1743,  1746,  1747,  1748,  1751,  1752,  1755,
+  1756,  1760,  1761,  1764,  1765,  1768,  1769,  1772,  1773,  1774,
+  1775,  1778,  1779,  1780,  1781,  1782,  1783,  1784,  1785,  1786,
+  1787,  1788,  1789,  1792,  1793,  1796,  1799,  1801,  1803,  1807,
+  1808,  1810,  1812,  1815,  1816,  1817,  1819,  1820,  1821,  1822,
+  1823,  1824,  1825,  1828,  1829,  1832,  1835,  1836,  1837,  1838,
+  1839,  1842,  1843
 };
 #endif
 
@@ -707,127 +786,141 @@ static const char * const yytname[] = {   "$","error","$undefined.","BADTOK",
 "CFOR","GOTO","CONTINUE","BREAK","RETURN","TSEMI","TLBRACE","TRBRACE","TCOMMA",
 "TCOLON","TASSIGN","TLPAREN","TRPAREN","TLSQBR","TRSQBR","TDOT","TAMPERSAND",
 "TEXCL","TTILDE","TMINUS","TPLUS","TMULT","TDIV","TPERCENT","TLT","TGT","TCIRC",
-"TBAR","TQUEST","CSIZEOF","ARROW_OP","CTYPEDEF","COFFSETOF","INC_OP","DEC_OP",
-"LEFT_OP","RIGHT_OP","LE_OP","GE_OP","EQ_OP","NE_OP","AND_OP","OR_OP","MUL_ASSIGN",
-"DIV_ASSIGN","MOD_ASSIGN","ADD_ASSIGN","SUB_ASSIGN","LEFT_ASSIGN","RIGHT_ASSIGN",
-"AND_ASSIGN","XOR_ASSIGN","OR_ASSIGN","CSTRUCT","CUNION","CENUM","VA_ARG","VA_DCL",
-"QGLOBALS","QMODIFIES","QNOMODS","QCONSTANT","QFUNCTION","QITER","QDEFINES",
-"QUSES","QALLOCATES","QSETS","QRELEASES","QPRECLAUSE","QPOSTCLAUSE","QALT","QUNDEF",
-"QKILLED","QENDMACRO","LLMACRO","LLMACROITER","LLMACROEND","TENDMACRO","QSWITCHBREAK",
-"QLOOPBREAK","QINNERBREAK","QSAFEBREAK","QINNERCONTINUE","QFALLTHROUGH","QLINTNOTREACHED",
-"QLINTFALLTHROUGH","QLINTFALLTHRU","QARGSUSED","QPRINTFLIKE","QLINTPRINTFLIKE",
-"QSCANFLIKE","QMESSAGELIKE","QNOTREACHED","QCONST","QVOLATILE","QINLINE","QEXTENSION",
-"QEXTERN","QSTATIC","QAUTO","QREGISTER","QOUT","QIN","QYIELD","QONLY","QTEMP",
-"QSHARED","QREF","QUNIQUE","QCHECKED","QUNCHECKED","QCHECKEDSTRICT","QCHECKMOD",
-"QKEEP","QKEPT","QPARTIAL","QSPECIAL","QOWNED","QDEPENDENT","QRETURNED","QEXPOSED",
-"QNULL","QOBSERVER","QISNULL","QEXITS","QMAYEXIT","QNEVEREXIT","QTRUEEXIT","QFALSEEXIT",
-"QLONG","QSIGNED","QUNSIGNED","QSHORT","QUNUSED","QSEF","QNOTNULL","QRELNULL",
-"QABSTRACT","QCONCRETE","QMUTABLE","QIMMUTABLE","QTRUENULL","QFALSENULL","QEXTERNAL",
-"QREFCOUNTED","QREFS","QNEWREF","QTEMPREF","QKILLREF","QRELDEF","CGCHAR","CBOOL",
-"CINT","CGFLOAT","CDOUBLE","CVOID","QANYTYPE","QINTEGRALTYPE","QUNSIGNEDINTEGRALTYPE",
-"QSIGNEDINTEGRALTYPE","IDENTIFIER","NEW_IDENTIFIER","CCONSTANT","ITER_NAME",
-"ITER_ENDNAME","TYPE_NAME","TYPE_NAME_OR_ID","file","externalDefs","externalDef",
+"TBAR","TQUEST","CSIZEOF","CALIGNOF","ARROW_OP","CTYPEDEF","COFFSETOF","INC_OP",
+"DEC_OP","LEFT_OP","RIGHT_OP","LE_OP","GE_OP","EQ_OP","NE_OP","AND_OP","OR_OP",
+"MUL_ASSIGN","DIV_ASSIGN","MOD_ASSIGN","ADD_ASSIGN","SUB_ASSIGN","LEFT_ASSIGN",
+"RIGHT_ASSIGN","AND_ASSIGN","XOR_ASSIGN","OR_ASSIGN","CSTRUCT","CUNION","CENUM",
+"VA_ARG","VA_DCL","QWARN","QGLOBALS","QMODIFIES","QNOMODS","QCONSTANT","QFUNCTION",
+"QITER","QDEFINES","QUSES","QALLOCATES","QSETS","QRELEASES","QPRECLAUSE","QPOSTCLAUSE",
+"QALT","QUNDEF","QKILLED","QENDMACRO","LLMACRO","LLMACROITER","LLMACROEND","TENDMACRO",
+"QSWITCHBREAK","QLOOPBREAK","QINNERBREAK","QSAFEBREAK","QINNERCONTINUE","QFALLTHROUGH",
+"QLINTNOTREACHED","QLINTFALLTHROUGH","QLINTFALLTHRU","QARGSUSED","QPRINTFLIKE",
+"QLINTPRINTFLIKE","QSCANFLIKE","QMESSAGELIKE","QNOTREACHED","QCONST","QVOLATILE",
+"QINLINE","QEXTENSION","QEXTERN","QSTATIC","QAUTO","QREGISTER","QOUT","QIN",
+"QYIELD","QONLY","QTEMP","QSHARED","QREF","QUNIQUE","QCHECKED","QUNCHECKED",
+"QCHECKEDSTRICT","QCHECKMOD","QKEEP","QKEPT","QPARTIAL","QSPECIAL","QOWNED",
+"QDEPENDENT","QRETURNED","QEXPOSED","QNULL","QOBSERVER","QISNULL","QEXITS","QMAYEXIT",
+"QNEVEREXIT","QTRUEEXIT","QFALSEEXIT","QLONG","QSIGNED","QUNSIGNED","QSHORT",
+"QUNUSED","QSEF","QNOTNULL","QRELNULL","QABSTRACT","QCONCRETE","QMUTABLE","QIMMUTABLE",
+"QTRUENULL","QFALSENULL","QEXTERNAL","QREFCOUNTED","QREFS","QNEWREF","QTEMPREF",
+"QKILLREF","QRELDEF","CGCHAR","CBOOL","CINT","CGFLOAT","CDOUBLE","CVOID","QANYTYPE",
+"QINTEGRALTYPE","QUNSIGNEDINTEGRALTYPE","QSIGNEDINTEGRALTYPE","QNULLTERMINATED",
+"QSETBUFFERSIZE","QSETSTRINGLENGTH","QMAXSET","QMAXREAD","QTESTINRANGE","TCAND",
+"IDENTIFIER","NEW_IDENTIFIER","TYPE_NAME_OR_ID","CANNOTATION","CCONSTANT","ITER_NAME",
+"ITER_ENDNAME","TYPE_NAME","METASTATE_NAME","file","externalDefs","externalDef",
 "constantDecl","fcnDecl","@1","plainFcn","plainNamedDecl","namedDeclBase","@2",
 "@3","plainNamedDeclBase","@4","@5","iterDecl","@6","@7","macroDef","fcnDefHdr",
-"optGlobMods","@8","optPlainGlobMods","@9","optGlobModsRest","optPlainGlobModsRest",
-"specialClauses","globIdList","globIdListExpr","globId","globQual","optGlobQuals",
-"optGlobModsAux","@10","@11","optPlainGlobModsAux","@12","@13","optMods","fcnMods",
-"@14","fcnPlainMods","@15","specialTag","endStateTag","endSpecialTag","stateSpecialClause",
-"specialClauseType","specialClause","@16","@17","fcnDefHdrAux","fcnBody","@18",
-"@19","fcnDef","locModifies","locPlainModifies","modListExpr","mExpr","modList",
-"specClauseListExpr","specClauseList","primaryExpr","postfixExpr","argumentExprList",
-"unaryExpr","offsetofExpr","sizeofExpr","@20","sizeofExprAux","castExpr","timesExpr",
-"plusExpr","shiftExpr","relationalExpr","equalityExpr","bitandExpr","xorExpr",
-"bitorExpr","andExpr","@21","orExpr","@22","conditionalExpr","@23","@24","assignExpr",
-"expr","optExpr","constantExpr","initializer","instanceDecl","@25","@26","namedInitializer",
-"@27","typeDecl","@28","IsType","PushType","namedInitializerList","namedInitializerListAux",
-"optDeclarators","init","initList","storageSpecifier","typeQualifier","typeModifier",
-"typeSpecifier","completeType","completeTypeSpecifier","altType","completeTypeSpecifierAux",
-"optCompleteType","suSpc","@29","@30","@31","@32","@33","@34","@35","@36","NotType",
+"metaStateConstraint","metaStateSpecifier","@8","@9","metaStateExpression","metaStateName",
+"BufConstraintList","BufConstraint","bufferModifier","relationalOp","BufConstraintExpr",
+"BufConstraintTerm","BufConstraintSrefExpr","BufUnaryOp","BufBinaryOp","functionClauses",
+"functionClausesPlain","functionClause","functionClausePlain","globalsClause",
+"globalsClausePlain","@10","nomodsClause","modifiesClause","modifiesClausePlain",
+"@11","flagSpec","flagId","optWarnClause","warnClause","warnClausePlain","globIdList",
+"globIdListExpr","optGlobQuals","globId","globQual","stateTag","conditionTag",
+"fcnDefHdrAux","fcnBody","@12","@13","@14","fcnDef","locModifies","modListExpr",
+"mExpr","modList","specClauseListExpr","optSpecClauseList","specClauseList",
+"primaryExpr","postfixExpr","argumentExprList","unaryExpr","fieldDesignator",
+"offsetofExpr","sizeofExpr","@15","sizeofExprAux","castExpr","timesExpr","plusExpr",
+"shiftExpr","relationalExpr","equalityExpr","bitandExpr","xorExpr","bitorExpr",
+"andExpr","@16","orExpr","@17","conditionalExpr","@18","@19","assignExpr","expr",
+"optExpr","constantExpr","initializer","instanceDecl","@20","@21","namedInitializer",
+"@22","typeDecl","@23","IsType","PushType","namedInitializerList","namedInitializerListAux",
+"optDeclarators","init","initList","storageSpecifier","stateClause","stateClausePlain",
+"@24","conditionClause","startConditionClause","conditionClausePlain","@25",
+"@26","functionConstraint","exitsQualifier","checkQualifier","stateQualifier",
+"paramQualifier","visibilityQualifier","returnQualifier","typedefQualifier",
+"refcountQualifier","typeModifier","definedQualifier","typeQualifier","typeSpecifier",
+"completeType","completeTypeSpecifier","altType","completeTypeSpecifierAux",
+"optCompleteType","suSpc","@27","@28","@29","@30","@31","@32","@33","@34","NotType",
 "structDeclList","structDecl","structNamedDeclList","structNamedDecl","enumSpc",
-"@37","enumeratorList","enumerator","optNamedDecl","namedDecl","genericParamList",
+"@35","enumeratorList","enumerator","optNamedDecl","namedDecl","genericParamList",
 "innerMods","innerModsList","pointers","paramIdList","idList","paramTypeList",
-"paramList","@38","@39","paramDecl","typeExpression","abstractDecl","optAbstractDeclBase",
+"paramList","@36","@37","paramDecl","typeExpression","abstractDecl","optAbstractDeclBase",
 "abstractDeclBase","stmt","iterBody","endBody","iterDefStmtList","iterDefIterationStmt",
-"forPred","@40","@41","partialIterStmt","@42","iterDefStmt","iterSelectionStmt",
-"openScope","closeScope","macroBody","stmtErr","labeledStmt","caseStmt","@43",
-"@44","defaultStmt","@45","@46","compoundStmt","compoundStmtErr","CreateInnerScope",
+"forPred","@38","@39","partialIterStmt","@40","iterDefStmt","iterSelectionStmt",
+"openScope","closeScope","macroBody","stmtErr","labeledStmt","caseStmt","@41",
+"@42","defaultStmt","@43","@44","compoundStmt","compoundStmtErr","CreateInnerScope",
 "DeleteInnerScope","CreateStructInnerScope","DeleteStructInnerScope","DeleteInnerScopeSafe",
 "compoundStmtRest","compoundStmtAux","compoundStmtAuxErr","stmtListErr","initializerList",
-"stmtList","expressionStmt","expressionStmtErr","ifPred","selectionStmt","@47",
-"@48","whilePred","iterWhilePred","iterStmt","@49","@50","iterArgList","@51",
-"iterArgExpr","primaryIterExpr","postfixIterExpr","unaryIterExpr","castIterExpr",
-"timesIterExpr","plusIterExpr","shiftIterExpr","relationalIterExpr","equalityIterExpr",
-"bitandIterExpr","xorIterExpr","bitorIterExpr","andIterExpr","orIterExpr","conditionalIterExpr",
-"@52","@53","assignIterExpr","endIter","doHeader","iterationStmt","iterationStmtErr",
-"jumpStmt","optSemi","id","newId","typeName", NULL
+"stmtList","expressionStmt","expressionStmtErr","ifPred","selectionStmt","@45",
+"@46","whilePred","iterWhilePred","iterStmt","@47","@48","iterArgList","@49",
+"iterArgExpr","cconstantExpr","primaryIterExpr","postfixIterExpr","unaryIterExpr",
+"castIterExpr","timesIterExpr","plusIterExpr","shiftIterExpr","relationalIterExpr",
+"equalityIterExpr","bitandIterExpr","xorIterExpr","bitorIterExpr","andIterExpr",
+"orIterExpr","conditionalIterExpr","@50","@51","assignIterExpr","endIter","doHeader",
+"iterationStmt","iterationStmtErr","jumpStmt","optSemi","id","newId","typeName", NULL
 };
 #endif
 
 static const short yyr1[] = {     0,
-   181,   181,   182,   182,   183,   183,   183,   183,   183,   183,
-   183,   184,   184,   186,   185,   187,   187,   188,   188,   189,
-   189,   189,   189,   190,   189,   191,   189,   192,   192,   192,
-   192,   193,   192,   194,   192,   196,   197,   195,   198,   198,
-   198,   198,   199,   201,   200,   203,   202,   204,   204,   205,
-   205,   206,   206,   207,   207,   208,   209,   209,   210,   210,
-   210,   210,   210,   211,   211,   213,   212,   214,   212,   212,
-   212,   212,   216,   215,   217,   215,   215,   215,   215,   218,
-   218,   220,   219,   222,   221,   223,   223,   223,   223,   223,
-   224,   225,   226,   226,   227,   227,   227,   227,   227,   227,
-   227,   227,   229,   228,   230,   228,   231,   231,   233,   232,
-   234,   232,   235,   236,   236,   237,   237,   238,   238,   238,
-   238,   238,   238,   238,   238,   239,   239,   240,   240,   241,
-   241,   241,   241,   241,   241,   241,   241,   242,   242,   243,
-   243,   243,   243,   243,   243,   244,   244,   244,   244,   244,
-   244,   244,   244,   244,   245,   245,   246,   246,   246,   246,
-   246,   246,   246,   246,   246,   246,   246,   247,   249,   248,
-   250,   250,   251,   251,   252,   252,   252,   252,   253,   253,
-   253,   254,   254,   254,   255,   255,   255,   255,   255,   256,
-   256,   256,   257,   257,   258,   258,   259,   259,   260,   261,
-   260,   262,   263,   262,   264,   265,   266,   264,   267,   267,
-   267,   267,   267,   267,   267,   267,   267,   267,   267,   267,
-   268,   268,   269,   269,   270,   271,   271,   271,   272,   273,
-   272,   274,   272,   275,   276,   275,   278,   277,   277,   277,
-   279,   280,   281,   282,   282,   283,   283,   284,   284,   284,
-   285,   285,   286,   286,   286,   286,   286,   287,   287,   287,
-   287,   287,   287,   287,   287,   287,   287,   287,   287,   287,
-   287,   287,   287,   287,   287,   287,   287,   287,   287,   287,
-   287,   287,   287,   287,   287,   287,   287,   287,   287,   287,
-   287,   287,   287,   287,   287,   287,   287,   287,   287,   287,
-   287,   287,   288,   288,   288,   288,   289,   289,   289,   289,
-   289,   289,   289,   289,   289,   289,   289,   289,   289,   289,
-   290,   291,   291,   292,   292,   293,   293,   293,   294,   294,
-   296,   297,   295,   298,   299,   295,   295,   295,   300,   301,
-   295,   302,   303,   295,   295,   295,   295,   295,   304,   305,
-   305,   305,   306,   306,   307,   307,   308,   308,   308,   309,
-   310,   309,   309,   311,   311,   311,   312,   312,   313,   313,
-   313,   313,   314,   314,   315,   315,   316,   316,   317,   317,
-   318,   318,   318,   318,   319,   319,   320,   320,   321,   321,
-   321,   323,   322,   324,   322,   325,   325,   326,   326,   327,
-   327,   327,   328,   328,   329,   329,   329,   329,   329,   329,
-   329,   329,   329,   330,   330,   330,   330,   330,   330,   330,
-   330,   330,   331,   332,   333,   333,   334,   334,   334,   334,
-   336,   337,   335,   339,   338,   338,   340,   340,   340,   340,
-   340,   340,   340,   340,   340,   340,   340,   340,   340,   341,
-   342,   343,   344,   344,   345,   345,   345,   345,   345,   345,
-   345,   345,   345,   345,   345,   346,   346,   348,   347,   349,
-   347,   351,   350,   352,   350,   353,   353,   354,   355,   356,
-   357,   358,   359,   360,   360,   360,   360,   360,   360,   360,
-   360,   361,   362,   362,   362,   362,   363,   363,   364,   364,
-   365,   365,   366,   366,   367,   367,   367,   368,   369,   370,
-   369,   371,   369,   372,   373,   375,   376,   374,   377,   378,
-   377,   379,   379,   379,   379,   380,   380,   381,   381,   381,
-   381,   381,   381,   381,   381,   381,   382,   382,   382,   382,
-   382,   382,   382,   382,   382,   382,   383,   383,   384,   384,
-   384,   384,   385,   385,   385,   386,   386,   386,   387,   387,
-   387,   387,   387,   388,   388,   388,   389,   389,   390,   390,
-   391,   391,   392,   392,   393,   393,   394,   395,   396,   394,
-   397,   397,   397,   397,   397,   397,   397,   397,   397,   397,
-   397,   397,   398,   398,   399,   400,   400,   400,   401,   401,
-   401,   401,   402,   402,   402,   402,   402,   402,   402,   402,
-   402,   402,   403,   403,   404,   405,   405,   405,   405,   406,
-   406
+   192,   192,   193,   193,   194,   194,   194,   194,   194,   194,
+   194,   195,   195,   197,   196,   198,   198,   199,   199,   200,
+   200,   200,   200,   201,   200,   202,   200,   203,   203,   203,
+   203,   204,   203,   205,   203,   207,   208,   206,   209,   209,
+   209,   209,   210,   211,   213,   212,   214,   212,   215,   215,
+   216,   217,   217,   218,   219,   219,   220,   220,   220,   221,
+   221,   221,   222,   222,   223,   223,   223,   223,   223,   223,
+   223,   223,   224,   225,   225,   226,   226,   227,   227,   228,
+   228,   228,   228,   228,   228,   229,   229,   229,   229,   229,
+   229,   230,   232,   231,   233,   234,   236,   235,   237,   237,
+   238,   239,   239,   240,   241,   241,   242,   242,   243,   244,
+   244,   245,   245,   245,   246,   246,   246,   246,   246,   247,
+   247,   247,   247,   247,   248,   248,   249,   249,   251,   250,
+   252,   253,   250,   254,   255,   255,   256,   256,   256,   256,
+   256,   256,   256,   256,   257,   257,   258,   258,   259,   259,
+   259,   259,   259,   259,   259,   259,   260,   260,   261,   261,
+   262,   262,   262,   262,   262,   262,   263,   263,   263,   263,
+   263,   263,   263,   263,   263,   264,   264,   265,   265,   265,
+   265,   265,   265,   265,   265,   265,   265,   265,   266,   266,
+   267,   269,   268,   270,   270,   270,   270,   271,   271,   272,
+   272,   272,   272,   273,   273,   273,   274,   274,   274,   275,
+   275,   275,   275,   275,   276,   276,   276,   277,   277,   278,
+   278,   279,   279,   280,   281,   280,   282,   283,   282,   284,
+   285,   286,   284,   287,   287,   287,   287,   287,   287,   287,
+   287,   287,   287,   287,   287,   288,   288,   289,   289,   290,
+   291,   291,   291,   292,   293,   292,   294,   292,   295,   296,
+   295,   298,   297,   297,   297,   299,   300,   301,   302,   302,
+   303,   303,   304,   304,   304,   305,   305,   306,   306,   306,
+   306,   306,    -1,   307,   309,   308,   310,   311,   313,   312,
+   314,   312,   315,   315,   316,   316,   316,   316,   316,   317,
+   317,   317,   317,   318,   318,   318,   318,   318,   318,   318,
+   318,   318,   318,   318,   318,   318,   318,   318,   318,   318,
+   319,   319,   320,   320,   321,   321,   322,   322,   322,   322,
+   323,   323,   323,   323,   323,   323,   324,   324,   324,   324,
+   325,   325,   325,   325,   326,   326,   326,   326,   326,   326,
+   326,   326,   326,   326,   326,   327,   327,   327,   327,   327,
+   327,   327,   327,   327,   327,   327,   327,   327,   327,   328,
+   329,   329,   330,   330,   331,   331,   331,   332,   332,   334,
+   335,   333,   336,   337,   333,   333,   333,   338,   339,   333,
+   340,   341,   333,   333,   333,   333,   333,   342,   343,   343,
+   343,   344,   344,   345,   345,   346,   346,   346,   347,   348,
+   347,   347,   349,   349,   349,   350,   350,   351,   351,   351,
+   351,   352,   352,   353,   353,   354,   354,   355,   355,   356,
+   356,   356,   356,   357,   357,   358,   358,   359,   359,   359,
+   361,   360,   362,   360,   363,   363,   364,   364,   365,   365,
+   365,   366,   366,   367,   367,   367,   367,   367,   367,   367,
+   367,   367,   368,   368,   368,   368,   368,   368,   368,   368,
+   368,   369,   370,   371,   371,   372,   372,   372,   372,   374,
+   375,   373,   377,   376,   376,   378,   378,   378,   378,   378,
+   378,   378,   378,   378,   378,   378,   378,   378,   379,   380,
+   381,   382,   382,   383,   383,   383,   383,   383,   383,   383,
+   383,   383,   383,   383,   384,   384,   386,   385,   387,   385,
+   389,   388,   390,   388,   391,   391,   392,   393,   394,   395,
+   396,   397,   398,   398,   398,   398,   398,   398,   398,   398,
+   399,   400,   400,   400,   400,   401,   401,   402,   402,   403,
+   403,   404,   404,   405,   405,   405,   406,   407,   408,   407,
+   409,   407,   410,   411,   413,   414,   412,   415,   416,   415,
+   417,   417,   417,   417,   418,   418,   419,   419,   420,   420,
+   420,   420,   420,   420,   420,   420,   420,   421,   421,   421,
+   421,   421,   421,   421,   421,   421,   421,   422,   422,   423,
+   423,   423,   423,   424,   424,   424,   425,   425,   425,   426,
+   426,   426,   426,   426,   427,   427,   427,   428,   428,   429,
+   429,   430,   430,   431,   431,   432,   432,   433,   434,   435,
+   433,   436,   436,   436,   436,   436,   436,   436,   436,   436,
+   436,   436,   436,   437,   437,   438,   439,   439,   439,   440,
+   440,   440,   440,   441,   441,   441,   441,   441,   441,   441,
+   441,   441,   441,   442,   442,   443,   444,   444,   444,   444,
+   444,   445,   445
 };
 
 static const short yyr2[] = {     0,
@@ -835,1626 +928,1686 @@ static const short yyr2[] = {     0,
      1,     8,    11,     0,     5,     1,     3,     1,     2,     1,
      6,     3,     6,     0,     6,     0,     7,     1,     6,     3,
      6,     0,     6,     0,     7,     0,     0,    10,     3,     3,
-     3,     2,     1,     0,     2,     0,     2,     1,     2,     1,
-     2,     1,     2,     1,     3,     2,     1,     1,     1,     1,
-     1,     1,     1,     0,     2,     0,     6,     0,     6,     1,
-     1,     0,     0,     5,     0,     5,     1,     1,     0,     1,
-     0,     0,     3,     0,     3,     1,     1,     1,     1,     1,
+     3,     2,     1,     3,     0,     4,     0,     4,     1,     3,
+     1,     3,     1,     3,     1,     1,     1,     1,     1,     1,
+     4,     5,     1,     1,     1,     1,     3,     4,     2,     3,
+     3,     3,     1,     1,     1,     0,     2,     0,     2,     1,
      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     0,     7,     0,     8,     1,     3,     0,     3,
-     0,     3,     2,     3,     2,     2,     1,     1,     1,     3,
-     4,     2,     3,     3,     3,     1,     1,     1,     3,     1,
-     1,     3,     4,     2,     3,     3,     3,     1,     3,     1,
-     1,     1,     3,     1,     1,     1,     4,     3,     4,     6,
-     5,     5,     2,     2,     1,     3,     1,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     1,     9,     0,     3,
-     4,     2,     1,     4,     1,     3,     3,     3,     1,     3,
-     3,     1,     3,     3,     1,     3,     3,     3,     3,     1,
-     3,     3,     1,     3,     1,     3,     1,     3,     1,     0,
-     4,     1,     0,     4,     1,     0,     0,     7,     1,     3,
-     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-     1,     3,     0,     1,     1,     1,     1,     1,     3,     0,
-     9,     0,    11,     2,     0,     6,     0,     7,     4,     4,
-     0,     0,     2,     1,     4,     0,     4,     1,     3,     4,
-     1,     3,     1,     1,     1,     1,     1,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     1,     1,     1,     1,     2,     2,     2,     2,
+     1,     2,     0,     4,     1,     2,     0,     3,     1,     3,
+     1,     1,     0,     2,     3,     2,     1,     3,     2,     0,
+     2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     3,     0,     3,
+     0,     0,     4,     2,     2,     1,     1,     1,     3,     4,
+     2,     3,     3,     3,     1,     1,     1,     3,     1,     1,
+     3,     4,     2,     3,     3,     3,     0,     1,     1,     3,
+     1,     1,     1,     3,     1,     1,     1,     4,     3,     4,
+     6,     5,     5,     2,     2,     1,     3,     1,     2,     2,
+     2,     2,     2,     2,     2,     2,     1,     1,     3,     1,
+     9,     0,     3,     4,     2,     4,     2,     1,     4,     1,
+     3,     3,     3,     1,     3,     3,     1,     3,     3,     1,
+     3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
+     3,     1,     3,     1,     0,     4,     1,     0,     4,     1,
+     0,     0,     7,     1,     3,     3,     3,     3,     3,     3,
+     3,     3,     3,     3,     3,     1,     3,     0,     1,     1,
+     1,     1,     1,     3,     0,     9,     0,    11,     2,     0,
+     6,     0,     8,     4,     4,     0,     0,     2,     1,     4,
+     0,     4,     1,     3,     4,     1,     3,     1,     1,     1,
+     1,     1,     2,     2,     0,     6,     2,     2,     0,     6,
+     0,     5,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     3,     1,     4,     1,     3,     2,     2,     2,     0,     1,
-     0,     0,    11,     0,     0,    11,     6,     6,     0,     0,
-    10,     0,     0,    10,     5,     5,     4,     4,     0,     1,
-     1,     2,     5,     3,     2,     4,     1,     2,     3,     6,
-     0,     8,     4,     1,     3,     2,     1,     4,     1,     1,
-     2,     2,     1,     2,     1,     2,     1,     1,     1,     2,
-     1,     2,     2,     3,     1,     3,     1,     3,     1,     1,
-     3,     0,     2,     0,     4,     4,     1,     1,     2,     1,
-     1,     2,     0,     1,     5,     2,     3,     3,     4,     3,
-     4,     4,     5,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     2,     2,     7,     6,     2,
-     0,     0,    10,     0,     6,     1,     1,     1,     1,     2,
-     1,     1,     1,     1,     1,     1,     1,     3,     1,     2,
-     2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     3,     1,     1,     3,     2,     0,     5,     0,
-     6,     0,     4,     0,     5,     3,     2,     3,     0,     0,
-     0,     0,     0,     1,     2,     2,     3,     2,     3,     3,
-     4,     2,     2,     3,     3,     4,     1,     2,     1,     2,
-     1,     2,     1,     2,     1,     2,     1,     4,     2,     0,
-     5,     0,     6,     4,     4,     0,     0,    10,     1,     0,
-     4,     1,     1,     1,     1,     1,     3,     1,     4,     3,
-     4,     6,     5,     5,     2,     2,     1,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     1,     4,     1,     3,
-     3,     3,     1,     3,     3,     1,     3,     3,     1,     3,
-     3,     3,     3,     1,     3,     3,     1,     3,     1,     3,
-     1,     3,     1,     3,     1,     3,     1,     0,     0,     7,
-     1,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-     3,     3,     1,     0,     1,     2,     7,     2,     2,     7,
-     6,     2,     3,     2,     3,     2,     3,     3,     3,     3,
-     2,     3,     0,     1,     1,     1,     1,     1,     1,     1,
-     1
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
+     1,     4,     1,     3,     2,     2,     2,     0,     1,     0,
+     0,    11,     0,     0,    11,     6,     6,     0,     0,    10,
+     0,     0,    10,     5,     5,     4,     4,     0,     1,     1,
+     2,     5,     3,     2,     4,     1,     3,     4,     6,     0,
+     8,     4,     1,     3,     2,     1,     4,     1,     1,     2,
+     2,     1,     2,     1,     2,     1,     1,     1,     2,     1,
+     2,     2,     3,     1,     3,     1,     3,     1,     1,     3,
+     0,     2,     0,     4,     4,     1,     1,     2,     1,     1,
+     2,     0,     1,     5,     2,     3,     3,     4,     3,     4,
+     4,     5,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     2,     2,     7,     6,     2,     0,
+     0,    10,     0,     6,     1,     1,     1,     1,     2,     1,
+     1,     1,     1,     1,     1,     1,     3,     1,     2,     2,
+     2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     3,     1,     1,     2,     2,     0,     4,     0,     5,
+     0,     3,     0,     4,     3,     2,     3,     0,     0,     0,
+     0,     0,     1,     2,     2,     3,     2,     3,     3,     4,
+     2,     2,     3,     3,     4,     1,     2,     1,     2,     1,
+     2,     1,     2,     1,     2,     1,     4,     2,     0,     5,
+     0,     6,     4,     4,     0,     0,    10,     1,     0,     4,
+     1,     1,     1,     1,     1,     2,     1,     3,     1,     4,
+     3,     4,     6,     5,     5,     2,     2,     1,     2,     2,
+     2,     2,     2,     2,     2,     2,     1,     1,     4,     1,
+     3,     3,     3,     1,     3,     3,     1,     3,     3,     1,
+     3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
+     3,     1,     3,     1,     3,     1,     3,     1,     0,     0,
+     7,     1,     3,     3,     3,     3,     3,     3,     3,     3,
+     3,     3,     3,     1,     0,     1,     2,     7,     2,     2,
+     7,     6,     2,     3,     2,     3,     2,     3,     3,     3,
+     3,     2,     3,     0,     1,     1,     1,     1,     1,     1,
+     1,     1,     1
 };
 
 static const short yydefact[] = {     0,
-    11,   381,   349,   227,   349,    14,     0,     0,     0,     0,
-   241,   241,   254,   253,   255,   256,   257,   241,   241,   241,
-   241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-   241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-   241,   241,   241,   304,   305,   306,   303,   241,   241,   241,
-   241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-   241,   241,   241,   241,   349,   349,   349,   349,   349,   349,
-   349,   349,   349,   349,   619,   616,   617,   618,   620,   621,
-     0,     3,     6,     7,   373,     8,     9,   349,    43,   613,
-    10,   226,   228,     0,   329,   329,   349,   329,   349,   322,
-   349,     0,   349,   107,   241,    20,   349,   377,   378,   379,
-   382,   383,   244,   241,   241,   237,   349,   349,   349,     0,
-   465,   241,   472,     0,     0,     0,   595,     0,     0,     0,
-     0,   241,   505,     0,   241,   241,   241,   241,   241,   241,
-   241,   241,   241,     0,    42,     0,     0,     0,     0,     0,
-     0,   241,   145,   615,   141,   142,   516,   144,   146,   157,
-   173,   167,   166,   175,   179,   182,   185,   190,   193,   195,
-   197,   199,   202,   205,   209,   221,   507,   169,     0,     0,
-   497,   455,   456,   457,   458,     0,     0,   459,   241,   460,
-     0,   461,     0,   462,   464,   140,     0,   449,     0,   503,
-     0,   479,   436,     0,     0,     0,   445,     0,   446,   425,
-   444,   441,   442,   437,   438,   439,     0,     0,   443,     0,
-     0,     0,   447,   424,     0,   258,   259,   260,   261,   266,
-   268,   267,   271,   272,   283,   285,   286,   284,   269,   270,
-   262,   263,   264,   265,   280,   281,   278,   282,   273,   274,
-   277,   275,   276,   289,   291,   296,   279,   292,   293,   294,
-   295,   287,   288,   290,   297,   298,   301,   302,   299,   300,
-   307,   309,   308,   310,   311,   312,   313,   314,   315,   316,
-     4,   241,     0,   109,   113,   499,   349,   349,   614,     5,
-   349,   330,   326,   327,   320,   328,     0,   241,   241,   318,
-   241,   241,     0,   319,   374,   317,   380,   384,   349,     0,
-   243,   349,     0,   234,   241,   613,    16,    18,     0,   349,
-   241,    28,   392,   241,   615,   141,   173,   225,   468,     0,
-   241,   241,   241,   223,     0,   604,   606,   611,     0,     0,
-   349,   398,     0,     0,   160,   165,   164,   163,   162,   161,
-     0,   241,   158,   159,   241,     0,     0,     0,     0,     0,
-   241,   474,   241,   467,   241,   414,   415,   416,   417,     0,
-   418,   419,   241,   421,   241,   420,   422,   479,   241,   241,
-   153,   154,     0,   241,   241,   241,   241,   241,   241,   241,
-   241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-   241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-   200,   206,   203,   506,   241,     0,   602,    39,     0,   480,
-   498,   509,   599,     0,   241,   241,     0,     0,     0,   504,
-    40,   426,   430,   440,   451,   452,   450,     0,     0,    41,
-    22,   241,   392,   349,   241,   479,   500,   241,   229,   108,
-   349,     0,   324,     0,   349,     0,   349,     0,   241,   241,
-   240,   241,   239,   235,   349,     0,   241,     0,   349,   241,
-    19,   389,     0,     0,   375,   390,   241,     0,     0,   241,
-     0,   512,     0,   224,     0,   603,   612,   143,   241,   241,
-     0,   400,   399,   401,   241,   463,   241,     0,   607,   608,
-   609,   610,   605,   470,     0,     0,   598,   349,   477,   596,
-     0,     0,   148,     0,   155,     0,     0,     0,   210,   211,
-   212,   213,   214,   215,   216,   217,   218,   219,   220,   176,
-   177,   178,   181,   180,   183,   184,   186,   187,   188,   189,
-   191,   192,   194,   196,   198,   241,   241,   241,   222,   241,
-   170,   493,   144,   497,     0,   349,   478,   510,     0,   466,
-     0,   448,   434,     0,     0,    24,     0,   484,   241,   501,
-   110,   349,   241,   349,   479,   112,   241,   230,   323,   241,
-   339,     0,   347,   342,     0,   348,     0,   364,   367,   361,
-   363,   245,   241,   241,   613,    15,    30,   241,   392,   241,
-    17,   376,   385,   387,    36,   394,   349,   393,   397,   241,
-   473,   508,     0,   514,   223,   321,   406,     0,   392,   402,
-   241,     0,   174,   349,   241,     0,   241,   476,   492,     0,
-   517,   241,   149,   147,   241,   241,   201,     0,   204,   241,
-   172,   494,   495,   241,   241,   241,   515,   241,   241,   349,
-    44,    26,   485,   488,   241,   241,   486,   241,   502,     0,
-   232,   241,   325,   345,   481,   331,   346,   481,   334,   241,
-   366,   241,     0,     0,   241,   241,   241,     0,    32,     0,
-   241,     0,    46,   391,   241,   403,   469,   241,     0,   407,
-   410,   241,     0,   408,     0,   392,     0,     0,   241,   475,
-   241,   241,   156,   151,   152,   207,     0,   496,   511,     0,
-   241,   241,   241,   241,   241,   241,   241,   241,   241,     0,
-   141,   142,   144,   157,   173,   166,   179,   182,   185,   190,
-   193,   195,   197,   199,   202,     0,   520,   519,   528,   537,
-   547,   549,   553,   556,   559,   564,   567,   569,   571,   573,
-   575,   577,   581,   522,   140,     0,    23,    25,    72,    44,
-   489,   490,   241,   487,    21,   241,   246,   349,   337,   481,
-   349,   338,   481,   360,   365,   241,     0,   238,   241,   248,
-   236,   241,     0,   349,    46,    34,     0,   386,   388,    37,
-    79,   395,   369,     0,   241,   403,   370,   404,   513,   431,
-     0,   411,   409,   412,     0,     0,   150,   471,     0,   520,
-   241,   171,   601,     0,     0,   160,   165,   164,   163,   162,
-   161,   158,   159,   241,   241,   241,   153,   154,     0,   241,
-   241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-   241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-   241,   241,   241,   241,   241,   241,   200,   578,   203,   435,
-     0,   429,    66,    82,    70,    86,    87,    88,    89,    90,
-    93,    94,    45,    72,    48,    71,   349,   349,    52,    27,
-   491,   241,     0,   351,   349,   349,   350,   349,   349,   349,
-   368,   241,   251,     0,   246,    12,    31,    33,    46,    29,
-   613,    73,    84,    77,    47,    79,    50,    78,   392,   396,
-   371,   372,   223,   405,   413,     0,     0,   479,   208,   600,
-   143,   241,     0,   148,     0,     0,     0,     0,   582,   583,
-   584,   585,   586,   587,   588,   589,   590,   591,   592,   176,
-   177,   178,   181,   180,   183,   184,   186,   187,   188,   189,
-   191,   192,   194,   196,   198,   574,   241,   576,   241,   428,
-   349,    64,   613,    49,   103,     0,    53,   246,   241,   349,
-     0,   241,   352,   340,   349,   343,   349,   362,   249,   241,
-   613,    35,     0,   349,    64,   613,    51,   241,   432,   241,
-   597,   594,   174,   241,   149,   147,   241,   241,     0,   521,
-   349,    59,    60,    61,    62,    63,   613,    54,    64,     0,
-     0,     0,   119,    83,   128,   613,     0,   118,     0,    95,
-   100,    99,    98,    97,    96,   101,   102,   105,     0,   231,
-   241,   354,   241,   241,   349,   357,     0,   332,     0,   335,
-   250,   252,     0,    38,   613,   613,    85,   613,   117,   241,
-     0,   168,   593,   480,     0,   151,   152,   579,     0,    64,
-     0,    65,    58,    56,    57,     0,   122,     0,     0,     0,
-     0,     0,   115,     0,     0,   131,   138,   613,   130,     0,
-   241,   247,   358,   241,     0,   355,   241,   341,     0,   344,
-     0,    13,    81,    81,   116,   433,   518,   150,   241,    81,
-    55,    81,   123,   120,   127,   126,     0,   124,   125,   129,
-   114,     0,   134,     0,     0,     0,     0,     0,   613,   233,
-   349,   353,   359,   333,   336,    74,    80,    76,   580,    67,
-    69,   121,   135,   132,     0,   136,   137,   139,    92,   241,
-     0,   356,   133,   104,    91,   241,   106,     0,     0,     0
+    11,   430,   398,   252,   398,    14,     0,     0,     0,     0,
+   266,   266,   279,   278,   280,   281,   282,   341,   342,   306,
+   308,   307,   311,   312,   300,   302,   303,   301,   309,   310,
+   343,   344,   304,   305,   321,   317,   313,   318,   314,   295,
+   296,   299,   297,   298,   338,   339,   340,   337,   323,   322,
+   316,   315,   327,   328,   329,   330,   325,   326,   324,   331,
+   332,   335,   336,   333,   334,   398,   398,   398,   398,   398,
+   398,   398,   398,   398,   398,   319,   666,   667,   671,   320,
+   668,   669,   672,     0,     3,     6,     7,   422,     8,     9,
+   131,    43,   664,    10,   251,   253,     0,   378,   266,   266,
+   266,   266,   266,   266,   266,   266,   398,   266,   378,   378,
+   398,   371,   398,     0,   398,   127,   266,   670,    20,   398,
+   426,   427,   428,   431,   432,   269,   266,   266,   262,   398,
+   673,   398,   398,   671,     0,   514,   266,   521,     0,     0,
+     0,   646,     0,     0,     0,     0,   266,   554,     0,   266,
+   266,   266,   266,   266,   266,   266,   266,   266,     0,    42,
+     0,     0,     0,     0,     0,     0,   266,   166,   162,   165,
+   575,   565,   167,   178,   198,   188,   187,   200,   204,   207,
+   210,   215,   218,   220,   222,   224,   227,   230,   234,   246,
+   556,   192,     0,     0,   546,   504,   505,   506,   507,     0,
+     0,   508,   266,   509,     0,   510,   163,     0,   511,   513,
+   161,     0,   498,     0,   552,     0,   528,   485,     0,     0,
+     0,   494,     0,   495,   474,   493,   490,   491,   486,   487,
+   488,     0,     0,   492,     0,     0,     0,   496,   473,     0,
+   345,   346,   356,   358,   357,   359,   360,   361,   362,   363,
+   364,   365,     4,   266,     0,   129,   134,   398,   665,     5,
+   398,   379,   375,   349,   351,   348,   350,   353,   352,   354,
+   355,   369,   347,   376,   377,     0,   266,   266,   367,   266,
+   266,     0,   368,   423,   366,   429,   433,   398,     0,   268,
+   398,     0,   259,   266,   664,    16,    18,     0,   398,   266,
+    28,   441,   266,   162,   165,   198,   250,   517,   161,     0,
+   266,   266,   266,   266,     0,   655,   657,   662,     0,     0,
+   398,   447,     0,     0,   181,   186,   185,   184,   183,   182,
+     0,   266,   179,   180,   266,     0,     0,     0,     0,     0,
+   266,   523,   266,   516,   266,   463,   464,   465,   466,     0,
+   467,   468,   266,   470,   266,   469,   471,   528,   266,   266,
+   174,   175,     0,   266,   266,   266,   266,   266,   266,   266,
+   266,   266,   266,   266,   266,   266,   266,   266,   266,   266,
+   266,   266,   266,   266,   266,   266,   266,   266,   266,   266,
+   225,   231,   228,   555,   266,     0,   653,    39,     0,   529,
+   547,   558,   650,   576,     0,   515,   266,     0,     0,     0,
+   553,    40,   475,   479,   548,   398,   489,   500,   501,   499,
+     0,     0,    41,    22,   266,   441,   398,   398,   266,   254,
+   128,   398,     0,   373,     0,   398,     0,   398,     0,   266,
+   266,   265,   266,   264,   260,   398,     0,   266,     0,   398,
+   266,    19,   438,     0,     0,   424,   439,   266,     0,     0,
+   522,     0,   561,     0,   249,     0,   654,   663,   164,   266,
+   266,     0,   449,   448,   450,   266,   512,   266,     0,   658,
+   659,   660,   661,   656,   519,     0,     0,   649,   398,   526,
+   647,     0,     0,   169,     0,   176,     0,     0,     0,   235,
+   236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+   201,   202,   203,   206,   205,   208,   209,   211,   212,   213,
+   214,   216,   217,   219,   221,   223,   266,   266,   266,   247,
+   266,   266,   193,   542,   165,   546,     0,   398,   527,   559,
+     0,     0,   497,   483,   266,   549,     0,     0,    24,     0,
+   533,   266,   550,   130,   398,   266,   528,   266,   255,   372,
+   266,   388,     0,   396,   391,     0,   397,     0,   413,   416,
+   410,   412,   270,   266,   266,   664,    15,    30,   266,   441,
+   266,    17,   425,   434,   436,    36,   443,   398,   442,   446,
+   518,   557,     0,   563,   266,   370,   455,     0,   441,   451,
+   266,     0,   199,   398,   266,     0,   524,   525,   541,     0,
+   566,   266,   170,   168,   266,   266,   226,     0,   229,   266,
+   195,   266,   197,   543,   544,   266,   266,   266,   564,   266,
+   398,   266,   398,    76,    26,   534,   537,   266,   266,   535,
+   266,   551,   528,   133,     0,   257,   266,   374,   394,   530,
+   380,   395,   530,   383,   266,   415,   266,     0,   103,   266,
+   266,   266,     0,    32,     0,   266,     0,    78,   440,   266,
+   452,   266,     0,   456,   459,   266,     0,   457,     0,   441,
+     0,     0,   520,   266,   266,   177,   172,   173,   232,     0,
+     0,   545,   560,     0,   266,   266,   266,   266,   266,   266,
+   266,   266,   266,     0,   162,   165,   178,   198,   187,   204,
+   207,   210,   215,   218,   220,   222,   224,   227,     0,   569,
+   568,   163,   579,   588,   598,   600,   604,   607,   610,   615,
+   618,   620,   622,   624,   626,   628,   632,   571,   161,     0,
+    23,     0,    93,    97,    95,   120,   121,   122,   123,   124,
+   125,   126,    25,    76,    80,     0,    82,    81,     0,    85,
+     0,   398,   398,    83,     0,    84,   291,     0,    76,   538,
+   539,   266,   536,    21,   266,   271,   398,   386,   530,   398,
+   387,   530,   409,   414,   266,     0,     0,   102,   266,   273,
+   261,   266,     0,   398,    78,    34,     0,   435,   437,    37,
+    78,    86,    88,    87,    91,    89,    90,   444,   418,     0,
+   266,   452,   419,   453,   562,   480,     0,   460,   458,   461,
+     0,     0,   171,     0,   569,   266,   194,   196,   652,     0,
+     0,   181,   186,   185,   184,   183,   182,   179,   180,   266,
+   266,   266,   174,   175,     0,   266,   266,   266,   266,   266,
+   266,   266,   266,   266,   266,   266,   266,   266,   266,   266,
+   266,   266,   266,   266,   266,   266,   266,   266,   266,   266,
+   266,   266,   225,   629,   228,   484,     0,   478,   101,   106,
+    99,   110,   664,    77,    92,    96,   104,   285,   288,   284,
+     0,   289,   287,    27,   540,   266,     0,   400,   398,   398,
+   399,   398,   398,   398,   417,   266,   263,   276,     0,   271,
+    12,    31,    33,    78,    29,   664,    79,   441,   445,   420,
+   421,   266,   454,   462,     0,   190,     0,   528,   233,   651,
+   164,   266,     0,   169,     0,     0,     0,     0,   633,   634,
+   635,   636,   637,   638,   639,   640,   641,   642,   643,   201,
+   202,   203,   206,   205,   208,   209,   211,   212,   213,   214,
+   216,   217,   219,   221,   223,   625,   266,   627,   266,   477,
+   105,     0,   115,   116,   117,   118,   119,   664,   107,   398,
+   110,     0,     0,   138,    98,   147,   664,   136,   137,     0,
+    47,     0,     0,    55,    56,    66,    64,   294,     0,   293,
+    53,    73,     0,    60,    63,     0,   664,    65,   157,   271,
+   266,   398,     0,   266,   401,   389,   398,   392,   398,   411,
+   274,   266,   664,    35,     0,   266,   481,   266,     0,   648,
+   645,   199,   266,   170,   168,   266,   266,     0,   570,   100,
+   110,    94,   113,   109,   114,   112,   111,     0,   141,     0,
+     0,     0,     0,   135,     0,     0,   150,   159,   664,   149,
+     0,     0,    63,     0,    69,     0,     0,    58,    57,    59,
+     0,     0,     0,     0,     0,     0,   266,   664,   158,     0,
+   256,   266,   403,   266,   266,   398,   406,     0,   381,     0,
+   384,   275,   277,     0,    38,   266,     0,   191,   189,   644,
+   529,     0,   172,   173,   630,   108,   142,   139,   145,     0,
+   146,   143,   144,   148,     0,   153,     0,     0,     0,     0,
+   266,     0,    75,    74,     0,    70,     0,    49,    44,    45,
+    52,    63,    54,    67,     0,    71,    72,     0,     0,   292,
+   266,   266,   272,   266,   266,     0,   404,   266,   390,     0,
+   393,     0,    13,   482,   567,   171,   266,   140,   154,   151,
+     0,   155,   156,   160,   286,    51,    48,     0,     0,    68,
+    46,    61,   290,   258,   407,   398,   402,   266,   382,   385,
+   631,   152,    62,    50,   405,   408,     0,     0,     0
 };
 
-static const short yydefgoto[] = {  1148,
-    81,    82,    83,    84,   119,   316,   317,    85,   651,   760,
-   318,   785,   899,    86,   683,   901,   884,    88,   758,   759,
-   790,   791,   873,   905,   874,  1007,  1008,  1064,  1009,  1010,
-   875,   961,   962,   907,   984,   985,  1126,  1127,   963,   908,
-   986,   877,  1146,  1140,   878,  1028,   879,  1019,  1080,    89,
-   285,   444,   446,    90,  1014,  1047,  1015,  1107,  1016,  1077,
-  1078,   159,   160,   514,   161,   162,   163,   416,   551,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,   173,   546,
-   174,   548,   175,   547,   811,   176,   204,   485,   329,   286,
-    92,   662,   766,   113,   594,    93,   312,   178,   283,   114,
-   115,   883,   781,   894,    95,    96,    97,    98,   342,   287,
-   452,   100,   293,   101,   770,  1089,   773,  1091,   665,  1037,
-   668,  1039,   102,   886,   887,  1034,  1035,   103,   673,   587,
-   588,   795,   117,   474,   110,   111,   105,   602,   603,   475,
-   476,   477,   685,   608,   343,   801,   797,   494,   364,   205,
-   225,   206,   207,   365,   913,  1051,   209,   648,   210,   211,
-   212,   213,   180,   421,   366,   367,   479,   626,   368,   330,
-   505,   369,   185,   370,   557,   768,   974,   218,   571,   509,
-   420,   187,   572,   573,   371,   188,   189,   372,   645,   613,
-   373,   221,   374,   378,   702,   737,   861,   738,   739,   740,
-   741,   742,   743,   744,   745,   746,   747,   748,   749,   750,
-   751,   752,   753,   957,  1099,   754,  1054,   375,   376,   194,
-   377,   290,   196,   197,   107
+static const short yydefgoto[] = {  1187,
+    84,    85,    86,    87,   133,   295,   296,    88,   634,   769,
+   297,   795,   914,    89,   668,   916,   898,    91,   998,  1128,
+  1075,  1061,  1129,  1167,  1000,  1001,  1002,  1071,  1003,  1004,
+  1132,  1006,  1125,   753,   800,   754,   801,   755,   802,   882,
+   803,   758,   804,   883,   880,   881,   787,   760,   761,   978,
+   979,   980,  1044,   981,   762,   763,    92,   257,   427,   258,
+   557,    93,   985,  1109,  1110,   987,  1058,  1078,  1059,   173,
+   174,   495,   175,   925,   176,   177,   396,   533,   178,   179,
+   180,   181,   182,   183,   184,   185,   186,   187,   527,   188,
+   529,   189,   528,   826,   190,   219,   466,   308,   415,    95,
+   647,   775,   126,   575,    96,   291,   192,   255,   127,   128,
+   897,   791,   909,    98,   764,   806,   990,   766,   767,   807,
+  1009,   891,  1007,    99,   100,   101,   102,   103,   104,   105,
+   106,   107,   108,   109,   110,   322,   416,   433,   112,   263,
+   113,   779,  1150,   782,  1152,   650,  1088,   653,  1090,   114,
+   900,   901,  1085,  1086,   115,   658,   568,   569,   811,   130,
+   455,   123,   124,   117,   583,   584,   456,   457,   458,   670,
+   589,   323,   817,   813,   475,   344,   220,   240,   221,   222,
+   345,   922,  1097,   224,   630,   225,   226,   227,   228,   194,
+   401,   346,   347,   460,   606,   348,   310,   486,   349,   199,
+   350,   539,   777,  1016,   233,   554,   490,   400,   201,   555,
+   556,   351,   202,   203,   352,   627,   593,   353,   236,   354,
+   358,   685,   720,   877,   721,   207,   723,   724,   725,   726,
+   727,   728,   729,   730,   731,   732,   733,   734,   735,   736,
+   737,   967,  1157,   738,  1101,   355,   356,   209,   357,   260,
+   309,   212,   120
 };
 
-static const short yypact[] = {  1812,
--32768,   148,  5048,-32768,  6116,-32768,   432,  2708,  3070,  3070,
+static const short yypact[] = {  2108,
+-32768,   259,  5207,-32768,  6305,-32768,   338,  3085,  3424,  3424,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   659,-32768,
+-32768,-32768,-32768,  2286,-32768,-32768,-32768,   452,-32768,-32768,
+    50,-32768,    84,-32768,-32768,-32768,    96,  6140,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  6140,  6140,
+   166,    87,-32768,   739,-32768,-32768,   338,-32768,-32768,-32768,
+-32768,-32768,-32768,   259,-32768,-32768,   171,-32768,   166,-32768,
+-32768,-32768,  5207,-32768,   196,-32768,  5436,-32768,   227,   237,
+   245,-32768,   268,   338,   281,   290,  1173,-32768,  2662,  5436,
+  5436,  5436,  5436,  5436,  5436,-32768,  5465,  5465,   289,-32768,
+   316,   336,   347,   362,   375,   135,  4651,-32768,   398,   404,
+-32768,   416,-32768,   895,   852,-32768,-32768,-32768,   426,   133,
+   639,   782,   710,   474,   472,   478,   481,   185,-32768,-32768,
+   191,-32768,  3467,   454,   457,-32768,-32768,-32768,-32768,   535,
+  3233,-32768,  4651,-32768,  3467,-32768,   372,  3467,-32768,-32768,
+   547,   562,-32768,   587,-32768,  2852,   416,   594,   429,   528,
+  3276,-32768,  3424,-32768,-32768,-32768,  5766,-32768,-32768,-32768,
+-32768,   618,   609,-32768,  3424,  3424,  3467,-32768,-32768,   550,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-  1993,-32768,-32768,-32768,   236,-32768,-32768,  4898,-32768,    67,
--32768,-32768,-32768,    71,  5848,  5848,-32768,  5848,    89,   104,
--32768,  1025,-32768,-32768,   432,-32768,-32768,-32768,-32768,-32768,
-   148,-32768,-32768,   178,-32768,    89,-32768,-32768,  5048,   183,
--32768,  5313,-32768,   221,   281,   290,-32768,   299,   432,   177,
-   311,   755,-32768,  2348,  5313,  5313,  5313,  5313,  5313,  5313,
--32768,  5338,  5338,   362,-32768,   376,   388,   416,   422,   434,
-   171,  4350,-32768,   436,   444,-32768,   464,-32768,-32768,   734,
-   844,-32768,-32768,-32768,  1072,   197,   248,   637,   315,   472,
-   470,   481,   483,   210,-32768,-32768,   132,-32768,  3112,   459,
-   485,-32768,-32768,-32768,-32768,   525,  2750,-32768,  4350,-32768,
-  3112,-32768,  3112,-32768,-32768,-32768,   539,-32768,   566,-32768,
-  2528,   464,   562,   405,   517,  2889,-32768,  3070,-32768,-32768,
--32768,  5610,-32768,-32768,-32768,-32768,   597,   621,-32768,  3070,
-  3070,  3112,-32768,-32768,   558,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   626,   635,-32768,-32768,  6030,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   646,   534,-32768,-32768,   338,
+   338,   302,-32768,   452,-32768,-32768,-32768,-32768,   665,-32768,
+-32768,   688,   645,   534,    84,-32768,   468,   690,-32768,   338,
+-32768,   228,  5436,-32768,-32768,-32768,-32768,-32768,-32768,   704,
+  5436,  5436,  5436,  1889,   724,-32768,-32768,-32768,   512,   359,
+  5634,    89,   744,   753,-32768,-32768,-32768,-32768,-32768,-32768,
+   762,  5436,-32768,-32768,  5436,   798,   800,   811,   826,   836,
+  5436,-32768,  1978,-32768,  4651,-32768,-32768,-32768,-32768,   847,
+-32768,-32768,  4651,-32768,  4651,-32768,-32768,-32768,  1106,  5436,
+-32768,-32768,    64,  5436,  5436,  5436,  5436,  5436,  5436,  5436,
+  5436,  5436,  5436,  5436,  5436,  5436,  5436,  5436,  5436,  5436,
+  5436,  5436,  5436,  5436,  5436,  5436,  5436,  5436,  5436,  5436,
+-32768,-32768,-32768,-32768,  5436,   781,-32768,-32768,  2472,-32768,
+-32768,   791,-32768,-32768,   879,-32768,  5436,   367,   900,   896,
+-32768,-32768,-32768,-32768,-32768,   166,  5766,-32768,-32768,-32768,
+  3042,   919,-32768,-32768,  5436,    65,  3615,  4732,   534,-32768,
+   386,  6305,   855,   915,   931,   948,   953,   948,   338,   959,
+   534,-32768,   534,-32768,-32768,-32768,   892,   962,   963,-32768,
+   534,   468,-32768,   338,   969,-32768,   981,   338,   333,   984,
+-32768,   385,  1023,   393,  1023,  1030,-32768,-32768,-32768,-32768,
+  5218,  1007,   538,-32768,   650,  5436,-32768,-32768,  1028,-32768,
+-32768,-32768,-32768,-32768,-32768,  1032,  1034,-32768,  3615,-32768,
+-32768,  1046,  1036,-32768,   394,-32768,   288,   338,   338,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   629,   640,-32768,-32768,-32768,    89,  4743,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   665,   381,-32768,-32768,
-   432,   432,   223,-32768,   236,-32768,-32768,-32768,-32768,   671,
--32768,-32768,   700,   701,   381,    67,-32768,   656,   703,-32768,
-   432,-32768,   169,  5313,-32768,-32768,-32768,-32768,-32768,   712,
-  5313,  5313,  5313,  5200,   719,-32768,-32768,-32768,   453,   506,
-  5480,   491,   720,   726,-32768,-32768,-32768,-32768,-32768,-32768,
-   735,  5313,-32768,-32768,  5313,   753,   786,   791,   794,   797,
-  5313,-32768,  1381,-32768,  4350,-32768,-32768,-32768,-32768,   810,
--32768,-32768,  4350,-32768,  4350,-32768,-32768,-32768,  5219,  5313,
--32768,-32768,   112,  5313,  5313,  5313,  5313,  5313,  5313,  5313,
-  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5313,
-  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5313,
--32768,-32768,-32768,-32768,  5313,   776,-32768,-32768,  2168,-32768,
--32768,   831,-32768,   852,  4350,  5313,   603,   833,   853,-32768,
--32768,-32768,-32768,  5610,-32768,-32768,-32768,  1684,   861,-32768,
--32768,  5313,   253,  3249,   381,   862,-32768,   381,-32768,   530,
-  6116,   808,   905,   908,   915,   917,   915,   432,   926,   381,
--32768,   381,-32768,-32768,-32768,   877,   919,   924,-32768,   381,
-   656,-32768,   432,   946,-32768,   952,   432,   393,   954,  4350,
-   642,   963,   648,   963,   968,-32768,-32768,-32768,-32768,  5244,
-   967,   686,-32768,   691,  5313,-32768,-32768,   971,-32768,-32768,
--32768,-32768,-32768,-32768,   989,   976,-32768,  3249,-32768,-32768,
-  1008,  1009,-32768,   670,-32768,   115,   432,   432,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,  1072,  1072,   197,   197,   248,   248,   248,   248,
-   637,   637,   315,   472,   470,  5313,  5313,  5313,-32768,  5381,
--32768,-32768,  5956,-32768,  2931,  3424,-32768,-32768,  1012,-32768,
-   727,-32768,-32768,  1028,   998,-32768,  1013,-32768,  3774,-32768,
--32768,  3599,  3816,-32768,   862,-32768,-32768,  1049,-32768,-32768,
-  1035,  1052,-32768,  1062,  1064,-32768,   358,-32768,  1067,-32768,
--32768,-32768,   178,-32768,   327,-32768,-32768,  5313,   259,   381,
--32768,-32768,  1077,-32768,-32768,  1080,  6116,-32768,-32768,  4350,
--32768,-32768,  1079,-32768,  5200,-32768,-32768,  1070,   704,   691,
-  5269,  1088,-32768,-32768,-32768,  1095,  4350,-32768,-32768,  1098,
--32768,  5313,-32768,-32768,-32768,-32768,   481,   451,   483,  5313,
--32768,-32768,-32768,  3952,  4350,  5313,-32768,  5406,  5313,-32768,
--32768,-32768,-32768,-32768,  3994,  4130,-32768,  4172,-32768,  1101,
--32768,-32768,-32768,-32768,-32768,  1081,-32768,-32768,  1082,-32768,
-   432,-32768,   432,  1109,  4770,-32768,-32768,  1102,-32768,  1103,
--32768,   305,-32768,-32768,   432,   548,-32768,  4350,  1112,-32768,
--32768,   103,  1106,-32768,  1107,   107,  1114,  1108,  4350,-32768,
-  5313,  5406,-32768,-32768,-32768,-32768,  1116,-32768,-32768,   740,
-  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5338,  5338,  1119,
-   747,   772,   778,   847,  1282,   806,  1075,   668,   799,   795,
-   730,  1110,  1105,  1111,  1091,   275,  1125,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   809,   814,-32768,-32768,  1076,-32768,
--32768,-32768,  4308,-32768,-32768,-32768,-32768,  6042,-32768,-32768,
-  6042,-32768,-32768,-32768,-32768,  5313,   840,-32768,  4770,-32768,
--32768,  4770,  1074,-32768,-32768,-32768,  1137,-32768,-32768,-32768,
-  1142,-32768,   236,  1140,-32768,   325,-32768,   691,-32768,-32768,
-  1157,-32768,-32768,-32768,  1160,   432,-32768,-32768,   817,  1161,
-  5313,-32768,  1147,   845,  1162,   857,   858,   859,   866,   912,
-   935,   937,   938,  5313,  5294,  5313,   960,   962,   117,  5313,
-  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5313,
-  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5313,  5313,
-  5313,  5313,  5313,  5313,  5313,  5313,  5313,-32768,  5313,-32768,
-  1168,  1173,    95,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,  1043,-32768,-32768,-32768,-32768,   997,-32768,
--32768,  4770,   477,-32768,    89,  4972,-32768,  6042,  4972,  6042,
--32768,-32768,-32768,   848,-32768,-32768,-32768,-32768,-32768,-32768,
-    67,   105,-32768,-32768,-32768,  1048,-32768,-32768,   266,-32768,
--32768,-32768,  5200,-32768,-32768,  1167,  1175,   862,-32768,-32768,
-   979,  5313,  1174,   982,   987,   191,   432,   432,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   999,
-  1001,  1014,   907,  1007,   443,   594,    76,   521,   617,   742,
-   609,   669,   570,   749,   313,   481,  5313,   483,  5406,-32768,
-  5740,   502,   120,-32768,-32768,   674,-32768,-32768,-32768,-32768,
-  1178,    62,-32768,-32768,  4972,-32768,  4972,-32768,-32768,   920,
-   542,-32768,  1113,  5740,   502,   120,-32768,    57,-32768,-32768,
--32768,  1019,  1023,-32768,  1024,  1026,-32768,-32768,   867,-32768,
-  4586,-32768,-32768,-32768,-32768,-32768,   550,-32768,   502,   723,
-    74,    74,-32768,-32768,   382,   560,  1117,-32768,    93,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   571,-32768,
-   381,-32768,  5313,  1177,-32768,  1179,  1183,-32768,  1185,-32768,
--32768,-32768,  1120,-32768,  4430,   550,-32768,   560,-32768,   310,
-  1181,-32768,-32768,-32768,  1184,  1032,  1039,-32768,  1121,   502,
-  1123,-32768,-32768,-32768,-32768,   283,   382,   186,   432,   432,
-    74,  1139,-32768,    93,    93,-32768,   396,   580,-32768,    93,
--32768,-32768,-32768,    62,  1217,-32768,  5313,-32768,  1216,-32768,
-  1218,-32768,  1165,  1165,-32768,-32768,-32768,  1041,  5313,  1165,
--32768,  1165,-32768,-32768,-32768,   382,  1213,-32768,-32768,   382,
--32768,   486,   396,   331,   432,   432,    93,  1154,   580,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  1215,-32768,-32768,   396,-32768,-32768,
-  1156,-32768,-32768,-32768,-32768,-32768,-32768,  1244,  1245,-32768
+-32768,-32768,-32768,   426,   426,   133,   133,   639,   639,   639,
+   639,   782,   782,   710,   474,   472,  5436,  5436,  5436,-32768,
+  5485,  5496,-32768,-32768,  4965,-32768,  2022,  3800,-32768,-32768,
+  1037,   403,-32768,-32768,   534,-32768,  1039,  1038,-32768,  1043,
+-32768,  4170,-32768,-32768,  3985,  4213,  1045,-32768,  1049,-32768,
+-32768,  1055,  1058,-32768,  1061,  1065,-32768,   676,-32768,  1062,
+-32768,-32768,-32768,   171,-32768,    98,-32768,-32768,  5436,   213,
+   534,-32768,-32768,  1066,-32768,-32768,  1081,  6305,-32768,-32768,
+-32768,-32768,  1063,-32768,  1889,-32768,-32768,  1064,   369,   650,
+  5380,  1069,-32768,-32768,-32768,  1067,-32768,-32768,-32768,  1079,
+-32768,  5436,-32768,-32768,-32768,-32768,   478,   839,   481,  5436,
+-32768,  5436,-32768,-32768,-32768,  4316,  4651,  5436,-32768,  5555,
+-32768,  5436,-32768,   938,-32768,-32768,-32768,  4359,  4462,-32768,
+  4505,-32768,  1045,-32768,  1082,-32768,-32768,-32768,-32768,-32768,
+  1084,-32768,-32768,  1088,-32768,   338,-32768,   338,  1041,  5128,
+-32768,-32768,  1083,-32768,  1086,-32768,   247,   938,-32768,   338,
+   591,  4651,  1096,-32768,-32768,   127,  1090,-32768,  1089,    82,
+  1100,  1097,-32768,  5436,  5555,-32768,-32768,-32768,-32768,  1098,
+  1101,-32768,-32768,   456,  5436,  5436,  5436,  5436,  5436,  5436,
+  5436,  5465,  5465,  1085,   488,   507,   960,  1187,   523,   999,
+   841,   856,   830,   874,  1099,  1094,  1102,  1092,   202,  1109,
+-32768,    10,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   532,   557,
+-32768,   964,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   938,-32768,  1054,-32768,-32768,  1057,-32768,
+  1060,-32768,-32768,-32768,  1068,-32768,  2185,  1070,   938,-32768,
+-32768,  4608,-32768,-32768,-32768,-32768,  6227,-32768,-32768,  6227,
+-32768,-32768,-32768,-32768,  5436,   932,  1126,-32768,  5128,-32768,
+-32768,  5128,  1071,-32768,   938,-32768,  1130,-32768,-32768,-32768,
+   938,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   452,  1127,
+-32768,   668,-32768,   650,-32768,-32768,  1131,-32768,-32768,-32768,
+  1147,   338,-32768,   577,  1149,  5436,-32768,-32768,  1159,   589,
+  1153,   598,   615,   670,   678,   684,   711,   719,   745,  5436,
+  5391,  5436,   763,   768,   120,  5436,  5436,  5436,  5436,  5436,
+  5436,  5436,  5436,  5436,  5436,  5436,  5436,  5436,  5436,  5436,
+  5436,  5436,  5436,  5436,  5436,  5436,  5436,  5436,  5436,  5436,
+  5436,  5436,  5436,-32768,  5436,-32768,  1158,  1162,-32768,   994,
+  1142,   269,    76,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   155,-32768,-32768,-32768,-32768,  5128,   582,-32768,   166,  4810,
+-32768,  6227,  4810,  6227,-32768,-32768,-32768,-32768,  1004,-32768,
+-32768,-32768,-32768,   938,-32768,    84,-32768,   546,-32768,-32768,
+-32768,  5411,-32768,-32768,   424,-32768,  1165,  1045,-32768,-32768,
+   788,  5436,  1164,   815,   901,   320,   338,   338,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   924,
+   926,   934,   716,   844,   463,   908,   597,   630,   718,   752,
+   825,   834,    93,   350,   118,   478,  5436,   481,  5555,-32768,
+   372,   964,-32768,-32768,-32768,-32768,-32768,   610,-32768,  5898,
+   269,    88,    88,-32768,-32768,    75,   627,-32768,-32768,   103,
+-32768,   541,   153,-32768,-32768,-32768,-32768,-32768,  1163,-32768,
+  1008,-32768,   985,-32768,   108,  1168,    84,-32768,   103,-32768,
+-32768,-32768,  1176,   527,-32768,-32768,  4810,-32768,  4810,-32768,
+-32768,  1794,   866,-32768,  1107,   643,-32768,-32768,   338,-32768,
+  1006,   941,-32768,   949,   952,-32768,-32768,  1019,-32768,-32768,
+   269,-32768,-32768,-32768,-32768,-32768,-32768,   431,    75,   410,
+   338,   338,    88,-32768,   103,   103,-32768,   275,   871,-32768,
+  1178,  1010,   551,   153,   318,    72,   541,-32768,-32768,-32768,
+   541,    20,   338,   338,  1179,   541,-32768,    84,  1177,   886,
+-32768,   534,-32768,-32768,  1188,-32768,  1186,  1191,-32768,  1193,
+-32768,-32768,-32768,  1125,-32768,   607,  1192,-32768,-32768,-32768,
+-32768,  1197,   974,   975,-32768,-32768,-32768,-32768,    75,  1189,
+   372,-32768,-32768,    75,   656,   275,   421,   338,   338,   103,
+-32768,  1035,-32768,-32768,   541,-32768,   551,  1183,-32768,   318,
+-32768,   318,-32768,-32768,  1198,-32768,-32768,  1035,  1202,-32768,
+-32768,-32768,-32768,  5436,   527,  1212,-32768,-32768,-32768,  1211,
+-32768,  1213,-32768,-32768,-32768,   980,  5436,-32768,-32768,-32768,
+  1205,-32768,-32768,   275,-32768,-32768,-32768,  1209,    72,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,  5436,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,  1236,  1237,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,  1169,-32768,-32768,-32768,-32768,  -453,  -103,-32768,-32768,
-   925,-32768,-32768,-32768,-32768,-32768,    80,-32768,   488,-32768,
-  -707,-32768,-32768,-32768,  -703,   267,   196,-32768,-32768,   245,
-   384,-32768,-32768,   353,-32768,-32768,  -648,  -689,-32768,-32768,
+-32768,  1154,-32768,-32768,-32768,-32768,  -400,  -105,-32768,-32768,
+   939,-32768,-32768,-32768,-32768,-32768,    54,-32768,-32768,   351,
+-32768,-32768,    86,   119,   174,-32768,-32768,-32768,  -947,-32768,
+  -842,-32768,-32768,  -444,  -728,-32768,-32768,-32768,  -586,-32768,
+  -558,-32768,  -556,-32768,   284,-32768,-32768,   599,  -639,-32768,
+   219,   280,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,  -828,   145,-32768,  -957,-32768,   254,-32768,
+  -605,   423,  1013,-32768,-32768,  -603,-32768,-32768,  -111,  -356,
+  -362,  -325,  -334,  -373,  -363,  -357,  -490,  -505,-32768,  -602,
+-32768,   -99,-32768,-32768,   529,  1216,  -579,  -339,     5,-32768,
+-32768,-32768,  -430,-32768,-32768,-32768,   654,  -261,   822,-32768,
+  -822,  -727,-32768,-32768,-32768,  -539,-32768,-32768,-32768,  -525,
+-32768,-32768,-32768,-32768,-32768,   499,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,    61,   706,-32768,   937,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   399,
+  -730,  -772,-32768,   123,-32768,-32768,   613,   616,   461,    13,
+  -380,  1151,-32768,     2,-32768,-32768,  -569,-32768,-32768,-32768,
+   608,  -272,   955,-32768,  -472,    36,  1272,-32768,  1047,-32768,
+  1271,-32768,-32768,-32768,-32768,  -142,-32768,-32768,-32768,-32768,
+   168,  1436,  1525,-32768,-32768,  1596,-32768,-32768,  -329,-32768,
+  1091,   186,  -597,  -713,-32768,   797,-32768,-32768,   889,  -195,
+  -470,    62,-32768,    95,     9,-32768,-32768,    26,-32768,    83,
+-32768,-32768,   612,-32768,   325,  -610,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,  -860,   146,   277,  -858,
-   184,-32768,  -602,   442,   515,-32768,  -556,-32768,-32768,   137,
-  -326,  -311,  -246,  -330,  -363,  -362,  -395,  -530,  -469,-32768,
-  -554,-32768,   -78,-32768,-32768,   787,   836,  -607,  -355,     1,
--32768,-32768,-32768,  -456,-32768,-32768,-32768,     0,  -244,   811,
--32768,  -782,  -676,-32768,-32768,-32768,-32768,-32768,-32768,   128,
-   690,-32768,   644,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,    97,  -669,  -512,-32768,   188,-32768,-32768,   601,
-   607,   487,     5,  -374,  1176,-32768,    11,-32768,-32768,  -553,
--32768,-32768,-32768,   600,  -292,   947,-32768,  -483,  1022,  1278,
--32768,  1069,-32768,  1060,-32768,-32768,-32768,-32768,   -97,-32768,
--32768,-32768,-32768,   317,  1078,  1115,-32768,-32768,  1267,-32768,
--32768,  -353,-32768,   635,   238,  -529,  -714,-32768,   785,-32768,
--32768,   876,   -23,  -446,   111,-32768,   174,    59,-32768,-32768,
-   194,-32768,   220,-32768,-32768,   595,-32768,   337,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,  1321,-32768,-32768,
-  1367,  -302,  -255,    68,-32768
+-32768,-32768,-32768,-32768,-32768,  1694,-32768,-32768,  1748,  -274,
+     0,   517,-32768
 };
 
 
-#define        YYLAST          6296
-
-
-static const short yytable[] = {    94,
-    91,   305,    94,   592,   104,   504,   453,   689,   620,   506,
-   226,   227,   112,   466,   545,   637,   601,   228,   229,   230,
-   231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
-   241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-   251,   252,   253,   328,   543,   724,   544,   254,   255,   256,
-   257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-   267,   268,   269,   270,   288,   693,   190,   106,   567,   876,
-   106,   533,   534,   468,   120,   541,   542,   898,   639,    87,
-    94,    91,   490,  1033,   289,   104,   565,   906,   535,   536,
-     2,   726,   576,   736,   291,     2,  -560,  1011,   297,   724,
-  -560,   889,   893,   428,    94,   895,  -241,  1012,   432,   644,
-   433,   472,   981,   310,   311,   313,  1074,   734,   319,   219,
-   219,   308,   437,   400,   401,   656,  1075,    99,   490,   321,
-   116,   804,   118,   341,   618,   415,     2,   289,   771,   517,
-   351,   634,   805,  1011,   927,   726,   681,   736,   106,   414,
-  1066,  1067,   415,  1012,   518,   537,   538,   539,   540,   928,
-    87,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-   280,   734,   106,   472,   976,   967,   361,   362,   735,   -68,
-   -68,     2,   220,   220,   876,  1029,   322,   299,   434,   -75,
-   -75,   982,   190,   295,   336,   298,   335,   300,   309,   304,
-   341,   191,   798,   306,   624,   968,   323,  1106,    99,  1011,
-  1110,   415,  1104,   314,   315,  1112,  1113,   996,   975,  1012,
-   977,   506,   292,   292,   680,   292,   468,   192,   398,   399,
-    75,    76,   735,    77,    78,    75,    76,   190,    77,    78,
-   888,   458,   678,   890,   331,   190,   320,   325,  1013,   190,
-   412,   190,   733,  1106,   108,   109,   383,   472,  1138,  -242,
-  1038,   282,  1040,   472,   413,   695,   325,  1076,   -68,   -68,
-   472,   345,   346,   347,   348,   349,   350,   566,   -75,   -75,
-   190,   442,   328,   679,   731,   732,   297,   453,   447,  -349,
-   691,  -349,   677,   325,  1013,   400,   401,    94,   451,  -349,
-   454,   456,   450,  1042,   332,   989,   733,  1103,  1068,   788,
-  1069,   219,   798,   333,    94,   858,   219,   730,   219,   465,
-   319,   727,   334,   341,   181,  1070,   956,   191,   337,   859,
-   219,   219,   698,  -572,  -400,   490,   728,  -572,   731,   732,
-   432,   491,  -349,  -349,   289,  -349,  -349,   707,  -241,   676,
-   490,   409,   492,   192,  1011,   693,   724,  1134,     2,   325,
-  1013,  1105,   341,   328,  1012,   106,   406,   407,   455,   457,
-   459,   730,   191,   973,   220,   727,   973,   670,   671,   220,
-   191,   220,   106,   445,   191,   355,   191,   448,   322,   958,
-   728,   356,   755,   220,   220,   556,    75,    76,   192,    77,
-    78,   729,   726,   357,   736,   460,   192,  1068,   462,  1069,
-   192,   328,   192,   415,     2,   191,   470,   488,   815,   473,
-   891,  1114,   430,  1115,  1070,   415,  -349,  -349,   734,  -349,
-  -349,   358,  -349,  -349,   447,  -349,  -349,   359,  1116,  -349,
-  -349,   192,  -349,  -349,    94,  1128,   755,    94,   360,   574,
-   344,  1130,   577,  1131,   582,   729,   585,  -619,   591,    94,
-   955,    94,   973,  -557,   973,  -616,   598,  -557,   489,   319,
-   487,   415,   706,   415,   398,   399,   607,   190,    75,    76,
-   321,    77,    78,    75,    76,  -617,    77,    78,   616,   735,
-   953,   491,   954,   622,   969,   417,   451,   970,    75,    76,
-   408,    77,    78,   911,   325,  1013,  1105,   423,   409,   424,
-  1133,  1114,   106,  1115,  -241,   106,   490,   943,   944,   328,
-   410,   951,   952,   414,     2,   589,   415,   106,  1116,   106,
-   488,   530,   531,   532,   945,   946,   411,   322,   439,   473,
-   604,  -561,   328,   419,   609,  -561,   578,  -349,   219,   418,
-  -349,   583,  -349,   586,    75,    76,   447,    77,    78,   289,
-   425,   595,   970,   733,   992,   600,   620,   289,   400,   401,
-  1060,  -241,   447,   490,  1082,  -453,   660,   289,   489,   451,
-  1071,     2,   793,  -618,   635,   636,  1002,  1003,  1081,   426,
-  -568,   970,   674,   675,  -568,   731,   732,   289,   983,   319,
-  1117,   947,   948,   949,   950,    75,    76,   431,    77,    78,
-   321,   220,   191,   190,  -558,   435,  1004,  1005,  -558,   622,
-   430,   406,   407,   415,   451,   398,   399,   488,   730,  -565,
-  1006,   623,   727,  -565,   704,   705,   327,  -562,   192,   341,
-   436,  -562,   186,   217,   217,   402,   403,   728,   440,   327,
-   327,   327,   327,   327,   327,   441,   353,   354,   404,   405,
-  1017,   767,   415,   443,   400,   401,   612,   322,   415,   774,
-   578,   776,   614,   402,   403,   782,   783,  1083,  1043,  -242,
-   787,   467,   449,  1049,   607,   794,   404,   405,   461,  -566,
-   632,   491,   793,  -566,   633,   473,   796,   328,  1059,   844,
-   845,  1055,   492,   755,  1061,   402,   403,  1018,   472,  -241,
-   341,   490,   729,  1072,  -241,   692,   621,   463,   404,   405,
-   697,    75,    76,   464,    77,    78,   469,  -349,   691,  -349,
-  1018,  1123,   919,   480,   686,   554,   486,  -349,   589,   294,
-   589,   296,  1093,  1094,   495,  1095,   757,   415,   191,   789,
-   496,   647,   609,   106,  1065,  1018,  1018,   379,   497,   380,
-   415,  -349,  -563,  1079,   813,   882,  -563,  -525,   186,  -570,
-   499,  -525,   338,  -570,   192,  1118,  -349,   408,   324,   381,
-   382,   852,   853,   135,   136,   137,   138,   139,   140,   400,
-   401,  1020,  -526,  1021,   910,   794,  -526,   622,  -524,   141,
-   142,   143,  -524,   500,  1022,  1023,   796,  1024,   501,  1025,
-  1026,   502,  1018,   186,   503,  1018,  1141,   550,  1079,  1079,
-   829,   186,  1027,   144,  1079,   186,  -546,   186,   508,  -523,
-  -546,   848,   849,  -523,   415,   217,   429,   415,   862,   558,
-   217,   917,   217,   177,   850,   851,   846,   847,   816,   817,
-   818,   819,   820,   821,   217,   217,   186,   562,  1018,   892,
-   671,  1079,   559,   106,   153,   415,   384,   979,   980,   921,
-   825,   564,   826,   916,  -349,   327,   563,  -540,  -545,  -544,
-   897,  -540,  -545,  -544,   971,   575,  -543,   415,  1058,  -349,
-  -543,   978,   827,   828,   579,   885,   325,  1063,   885,   385,
-   386,   387,   388,   389,   390,   391,   392,   393,   394,   327,
-   327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-   327,   327,   327,   327,   327,   580,   581,  -555,   325,   326,
-   156,  -555,  -542,  -241,   158,   584,  -542,  1001,   779,  1041,
-   395,   396,   397,   324,   590,   597,   305,   599,   135,   136,
-   137,   138,   139,   140,   328,  -541,   327,  -538,  -539,  -541,
-  1045,  -538,  -539,   596,   141,   142,   143,   339,  1030,   340,
-   605,    94,   606,   965,   966,   610,  1036,   940,   941,   942,
-  -535,   972,  -536,   415,  -535,   615,  -536,   794,   144,  1052,
-   619,   625,   577,   451,   997,   998,  1056,  1057,  1050,  -527,
-   628,   447,  -530,  -527,   327,   988,  -530,   632,   328,   327,
-   627,   995,   512,   885,   177,   885,   885,   885,   630,  -550,
-  1129,  -551,   177,  -550,   650,  -551,   177,  -554,   177,   153,
-    94,  -554,   631,  1085,  -552,   646,   427,   652,  -552,   106,
-   395,   396,   397,  -548,  -531,   447,  -529,  -548,  -531,   794,
-  -529,   649,  -533,   186,   664,   106,  -533,   177,   993,  -534,
-   327,  -532,   327,  -534,   641,  -532,  1031,   179,   208,   208,
-   666,   661,   217,   866,   867,   868,   869,   870,   871,   872,
-  1120,   667,   669,    94,   684,   182,   214,   214,  1036,   672,
-   301,   302,   303,   325,   326,   156,   690,   682,   106,   158,
-   769,   772,   885,   688,   885,   395,   396,   397,   841,   842,
-   843,   696,   327,   863,   864,   865,   699,   106,   902,   903,
-   904,   701,   183,   215,   215,   765,   778,   786,   784,   800,
-   802,  1086,   807,   803,   806,   327,  1108,  1109,   854,  1144,
-   812,   498,   824,   855,   857,  1147,   863,   864,   865,   860,
-   856,   106,   866,   867,   868,   869,   870,   871,   872,   478,
-   896,   900,   725,   909,   920,   515,   481,   482,   483,   484,
-   519,   520,   521,   522,   523,   524,   525,   526,   527,   528,
-   529,   914,  1136,  1137,   915,   918,   922,   478,   959,   186,
-   960,   990,   991,   179,   994,  1032,  1053,  1084,   478,  1044,
-  1087,   549,  1088,  1073,  1090,  1096,  1092,  1100,  1098,  1102,
-   422,   182,   902,   903,   904,   516,   725,  1142,   866,   867,
-   868,   869,   870,   871,   872,  1111,   327,   327,   327,   327,
-   327,   327,   822,   823,  1122,  1124,   864,  1125,   179,  1132,
-  1139,  1143,  1145,  1149,  1150,   471,   179,   880,   183,   281,
-   179,  1046,   179,  1062,   177,  1101,   182,   964,   987,  1135,
-   208,   561,  1048,  1119,   182,   208,   925,   208,   182,   663,
-   182,  1121,   593,   777,   184,   216,   216,   775,   214,   208,
-   208,   179,   912,   214,   792,   214,   307,   224,   493,   438,
-   327,  1097,   629,   183,   555,  1000,   810,   214,   214,   182,
-     0,   183,     0,     0,   830,   183,     0,   183,     0,     0,
-     0,     0,     0,     0,     0,   215,     0,     0,     0,     0,
-   215,     0,   215,     0,     0,   327,     0,     0,   193,   222,
-   222,     0,     0,     0,   215,   215,   183,   831,   832,   833,
-   834,   835,   836,   837,   838,   839,   840,     0,     0,     0,
-     0,     0,     0,     0,     0,   327,   327,   327,   327,   327,
-   327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-   327,   327,     0,   327,   195,   223,   223,     0,     0,     0,
-     0,     0,   638,     0,     0,     0,   507,     0,     0,     0,
-   177,     0,     0,     0,   510,     0,   511,     0,     0,  -479,
-   184,     0,     0,     0,   363,     0,     0,     0,     0,   135,
-   136,   137,   138,   139,   140,     0,     0,     0,   703,     0,
-     0,     0,     0,     0,     0,   141,   142,   143,     0,     0,
-     0,     0,     0,     0,     0,     0,   327,     0,     0,     0,
-     0,     0,     0,     0,     0,   184,   560,     0,     0,   144,
-   484,     0,     0,   184,   193,     0,     0,   184,     0,   184,
-     0,   780,     0,     0,     0,   570,     0,   216,     0,     0,
-     0,     0,   216,   725,   216,   478,     0,     0,   179,     0,
-     0,   710,     0,     0,   756,     0,   216,   216,   184,     0,
-   153,     0,     0,     0,     0,     0,   182,   208,     0,   193,
-   195,   611,     0,     0,     0,     0,     0,   193,     0,     0,
-     0,   193,     0,   193,     0,   214,     0,     0,     0,     0,
-     0,   222,     0,     0,     0,     0,   222,     0,   222,   570,
-     0,     0,     0,   183,     0,     0,   809,     0,     0,     0,
-   222,   222,   193,     0,     0,   195,   814,   327,     0,     0,
-     0,     0,   215,   195,   325,   326,   156,   195,     0,   195,
-   158,     0,     0,     0,     0,   780,     0,   223,   780,     0,
-     0,     0,   223,     0,   223,     0,     0,   570,     0,     0,
-     0,     0,     0,     0,     0,     0,   223,   223,   195,     0,
-     0,     0,     0,   570,   659,     0,     0,     0,     0,     0,
-     0,   327,     0,     0,     0,     0,     0,     0,     0,     0,
-   923,   515,     0,   327,   179,     0,   929,   930,   931,   932,
-   933,   934,   935,   936,   937,   938,   939,     0,     0,     0,
-     0,   687,   182,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   700,     0,
+#define        YYLAST          6495
+
+
+static const short yytable[] = {   118,
+   600,   485,   118,   125,    94,   434,   118,   211,   211,   211,
+   573,   284,   116,   487,   524,   673,   204,   516,   517,   722,
+   447,   514,   515,   619,   707,   525,   709,   719,   805,   677,
+  -577,   417,   526,   205,  -577,   449,   617,   307,   325,   326,
+   327,   328,   329,   330,  1062,   550,  1134,   756,  1005,   903,
+   582,   522,   523,    90,   986,   780,   518,   519,   520,   521,
+   111,   908,   428,   129,   910,   132,   913,   626,   256,   453,
+   234,   234,   917,   409,   722,   757,   991,   759,   413,   707,
+   414,   709,   719,   118,   639,   548,   453,  1023,    94,   549,
+   206,   498,   420,   259,   765,  1064,   116,  1115,  1116,   982,
+  1050,   259,  1051,   235,   235,   993,   820,   499,   768,   983,
+   821,   982,  -266,  -619,   471,   259,   118,  -619,  1052,   261,
+   661,   983,     2,  1133,   718,   287,  1055,  1015,  1139,   -45,
+  1015,   598,   118,  1072,   300,  1073,  1056,    90,  -623,   717,
+   341,   342,  -623,   118,   111,   386,   387,   937,   211,  1063,
+  1065,  1074,   471,  1048,  1049,   805,   389,   204,   262,   991,
+     2,   805,  1164,   938,   378,   379,   211,   756,  1010,   262,
+   262,  1017,   278,  1019,   205,   195,  1064,  1168,   992,   718,
+   666,   902,   756,  -266,   904,  1024,   993,  1080,   993,  1018,
+   449,   288,   211,   299,   717,   757,   404,   759,   814,   665,
+   211,   204,   211,   538,   211,   604,  1135,   211,   394,   204,
+   757,   395,   759,   204,   765,   211,   204,   453,   205,   302,
+   211,  1127,   211,  1130,  1114,   392,   205,   644,   768,   765,
+   205,   206,   453,   205,   211,   211,   211,   664,   402,   663,
+   393,   307,   874,   768,  1015,   204,  1015,  -398,  -398,  -398,
+   311,   798,  -398,  -398,    77,   996,   714,   875,    77,   984,
+   312,   679,   205,   511,   512,   513,   715,   711,   313,   971,
+    77,   984,   716,   710,   805,   206,   118,   234,   413,   118,
+   118,   118,   234,   206,   234,    77,  1057,   206,   434,   431,
+   206,   314,     2,   118,  1093,   713,   234,   234,   316,   118,
+  1117,   662,  1118,  1089,   712,  1091,   446,   317,   395,   884,
+   235,   714,   335,   487,   614,   235,   324,   235,  1119,   206,
+   439,   715,   711,   473,   894,   307,  1130,   716,   710,   235,
+   235,   336,   682,   994,   995,    77,   996,    77,   996,   814,
+   395,   997,  1027,  1072,   211,  1073,  1035,   690,   677,   691,
+   713,   337,   211,   395,   211,   973,   974,   469,   722,   712,
+   397,  1074,   338,   707,   603,   709,   719,   121,   122,   968,
+  -621,   307,   403,   453,  -621,   405,   394,   339,   388,   395,
+   488,   470,   966,   469,   411,   975,   976,   395,   491,   340,
+   492,   469,  -398,   675,  -398,  -398,  -398,  -398,   211,   977,
+  -398,  -398,  -398,  -398,   422,   395,  -398,   204,  -398,   592,
+  -398,  -398,  -398,   395,   612,  -398,  -398,   594,   613,  -667,
+   211,   546,   831,   395,   205,  -671,   211,   629,   118,    77,
+    78,   134,   546,   982,    81,    82,  1108,  -668,   118,  1111,
+   118,   558,   118,   983,   982,   905,   411,  1160,  1028,   395,
+   118,  1029,   300,   118,   983,  1107,  1050,   118,  1051,   375,
+   376,   377,   553,   718,   243,   244,   245,   246,   247,   248,
+   249,   250,   251,   252,  1052,  -267,   395,   254,   717,   307,
+   829,   206,   234,  -608,    77,    78,   134,  -608,   211,    81,
+    82,  -267,   470,   448,   378,   379,   963,   118,   118,   955,
+   956,   307,   388,   953,   954,   272,  1111,   964,  -574,   277,
+   389,   279,  -574,   283,   965,   235,   119,   390,   285,   119,
+    77,    78,   134,   135,   553,    81,    82,  -573,   293,   468,
+   294,  -573,   395,   961,   962,   391,   211,   211,   957,   958,
+   959,   960,   546,  -597,   118,   204,   398,  -597,  1084,  -502,
+   453,   211,  -572,   399,   211,   211,  -572,   631,   404,   546,
+     2,  -266,   205,   471,   992,   809,   536,     2,  -670,  -398,
+   675,  -398,   363,   553,   993,  1126,  1072,   395,  1073,  -398,
+   118,   878,   300,   406,   832,   833,   834,   835,   836,   837,
+   553,   642,    77,   984,  1074,   714,   171,   395,  1031,  1011,
+   119,   927,  1012,    77,   984,   715,   711,   171,   988,   395,
+   407,   716,   710,   931,  -266,  -669,   471,  -611,  -591,   206,
+   412,  -611,  -591,   600,     2,   211,   211,   259,   419,   739,
+  1041,  -449,   471,   119,   713,  -596,   418,   211,   211,  -596,
+   211,  1025,   423,   712,   259,   380,   381,  1053,   671,   301,
+  -612,  1143,   424,    97,  -612,   118,    97,   118,   426,   429,
+   315,   642,   693,   430,   241,   242,   118,   445,   471,   118,
+   118,   211,   812,  -266,   642,   601,     2,   473,   380,   381,
+  1159,  1117,   442,  1118,   739,   307,   441,   380,   381,   443,
+  -595,  -266,  -673,   471,  -595,   655,   656,   451,  -594,  1119,
+   454,     2,  -594,  1042,  -593,   444,   809,   815,  -593,    77,
+    78,   134,  1054,   450,    81,    82,    77,    78,   134,   994,
+   995,    81,    82,    77,   996,   461,   929,   997,  -398,  -398,
+  -398,  -592,  1077,  -398,  -398,  -592,  -606,    97,  -613,  -589,
+  -606,   467,  -613,  -589,  -673,   950,   951,   952,  1094,   375,
+   376,   377,   264,   265,   266,   267,   268,   269,   270,   271,
+  1102,   273,   386,   387,   276,  -590,   380,   381,   476,  -590,
+    97,   211,  -614,    77,    78,   134,  -614,   477,    81,    82,
+   289,   290,   292,  -586,  1121,   478,   298,  -586,  -587,    77,
+    78,   134,  -587,   119,    81,    82,   436,   438,   440,   540,
+   380,   381,   321,  1141,  1175,   280,   281,   282,  -578,   331,
+   119,   118,  -578,   812,   545,   480,   301,   481,   382,   383,
+  1032,   118,   531,   532,   454,    77,    78,   134,   482,   559,
+    81,    82,   384,   385,   564,  -581,   567,   899,  1186,  -581,
+   899,  -673,  -673,   483,   576,  -616,  -673,  -673,   581,  -616,
+    77,    78,   134,   484,  -617,    81,    82,   920,  -617,   395,
+   689,   382,   383,   479,  -605,   489,   864,   865,  -605,   321,
+   382,   383,   860,   861,   364,   384,   385,   375,   376,   377,
+   866,   867,   989,   259,   384,   385,  1012,   496,   259,   541,
+  1008,  1120,   500,   501,   502,   503,   504,   505,   506,   507,
+   508,   509,   510,  1142,   862,   863,  1012,   425,   365,   366,
+   367,   368,   369,   370,   371,   372,   373,   374,   359,   544,
+   360,   612,  -398,   530,   543,  1034,   868,   869,  -609,   547,
+    97,   432,  -609,   435,   437,   561,   118,   118,  -398,   378,
+   379,   361,   362,   560,  -601,   119,  -602,    97,  -601,   562,
+  -602,   906,   656,   298,  -603,   570,   321,   119,  -603,   119,
+   899,  -599,   899,   899,   899,  -599,  -266,   301,   739,  -582,
+   585,   565,  -580,  -582,   590,   472,  -580,   571,   454,  1046,
+   577,   989,   989,   841,  1045,   842,   580,  -398,   578,  1060,
+   284,  1008,  1008,   586,  -584,  -585,   321,   676,  -584,  -585,
+  -583,   587,   681,  -398,  -583,   591,   843,   844,  1060,   742,
+   743,   744,   745,   118,   615,   616,   746,   747,   748,   749,
+   750,   751,   752,  1021,  1022,   118,  1087,  1096,   118,   559,
+   599,   741,   857,   858,   859,  1068,  1069,  1070,   558,   395,
+  1105,  1123,  1124,   395,   307,   274,   275,   595,   605,   989,
+   118,   118,   989,   607,  1060,  1060,   610,  1181,   608,   611,
+   628,   119,   632,  1008,   633,  1008,  1008,   635,   643,   276,
+  1008,   646,   118,   118,   649,  1008,   651,   899,   307,   899,
+   652,   118,    97,   654,   657,   669,   667,   672,   683,   563,
+   674,   566,   680,   572,    97,   118,    97,   301,   200,   232,
+   232,   579,   684,   778,   298,   845,   774,   781,   840,   794,
+   796,   588,   742,   816,   818,   819,   989,   118,   118,  1060,
+   822,   823,   827,   596,  1008,   828,   472,   870,   602,   303,
+   494,   432,   871,   876,   150,   151,   152,   153,   154,   155,
+   686,   872,   885,   907,   118,   886,   873,   879,   887,   306,
+   918,   156,   157,   158,   915,   923,   890,  1087,   893,   911,
+   888,   889,   306,   306,   306,   306,   306,   306,  1008,   333,
+   334,   924,   570,   928,   570,   159,   930,   932,   969,   970,
+   171,   972,  1030,   799,  1033,  1066,   590,   119,   790,  1067,
+   318,  1076,   912,  1083,  1100,  1095,   303,  1120,    97,  1122,
+  1138,   150,   151,   152,   153,   154,   155,  1148,  1145,   846,
+  1149,   645,  1151,  1153,   432,  1158,  1154,   168,   156,   157,
+   158,  1156,  1169,   191,  1170,  1166,  1172,   659,   660,  1177,
+  1179,  1182,  1180,  1183,   298,  1188,  1189,   253,   452,   200,
+  1131,   999,   159,   847,   848,   849,   850,   851,   852,   853,
+   854,   855,   856,   602,  1184,  1040,  1171,   788,   432,  1106,
+  1047,  1161,  1079,   935,   574,   892,   648,  1176,   687,   688,
+   786,   784,   921,   321,   286,   321,   474,   808,   193,   223,
+   223,   239,   421,   200,   168,   609,  1155,   537,    77,   304,
+   305,   200,   171,  1039,     0,   200,   825,  1014,   200,     0,
+   776,     0,     0,     0,     0,     0,   232,   410,   783,     0,
+   785,   232,     0,   232,   792,   793,  1026,   790,     0,   797,
+   790,     0,     0,   588,   810,   232,   232,   200,   119,   472,
+     0,     0,     0,     0,     0,     0,     0,     0,   926,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   321,     0,
+     0,     0,     0,   306,     0,    77,   304,   305,     0,   171,
+     0,     0,   319,     0,   320,     0,     0,     0,   933,   496,
+     0,     0,     0,     0,   939,   940,   941,   942,   943,   944,
+   945,   946,   947,   948,   949,     0,     0,   306,   306,   306,
+   306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+   306,   306,   306,     0,     0,     0,     0,     0,   191,     0,
+  1082,     0,     0,     0,     0,     0,   191,     0,     0,   193,
+   191,     0,     0,   191,   790,     0,     0,     0,   896,     0,
+     0,   408,     0,     0,     0,     0,     0,   306,     0,     0,
+     0,     0,     0,   196,   229,   229,     0,     0,   493,     0,
+     0,     0,   191,  1036,  1037,     0,     0,     0,     0,     0,
+     0,     0,     0,   193,   919,   810,     0,   602,     0,     0,
+     0,   193,     0,     0,     0,   193,     0,     0,   193,     0,
+     0,     0,     0,   306,  1147,     0,   223,     0,   306,   200,
+     0,   223,     0,   223,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   223,   223,   193,     0,     0,
+     0,   232,     0,     0,     0,     0,     0,     0,   459,     0,
+     0,     0,     0,     0,     0,     0,   462,   463,   464,   465,
+   119,     0,   197,   230,   230,     0,     0,     0,     0,   306,
+     0,   306,   119,   621,   623,  1099,     0,   459,     0,     0,
+   790,     0,  1013,     0,     0,     0,     0,     0,   459,  1020,
+     0,     0,     0,     0,     0,     0,     0,  1112,  1113,     0,
+     0,     0,     0,     0,  1185,   497,     0,     0,     0,     0,
+     0,     0,     0,     0,   196,     0,     0,     0,     0,  1136,
+  1137,   306,     0,     0,     0,     0,     0,     0,   119,     0,
+     0,     0,     0,   198,   231,   231,     0,     0,     0,     0,
+     0,     0,   119,   306,   191,     0,     0,     0,     0,     0,
+     0,     0,   542,     0,     0,     0,     0,   200,   196,     0,
+     0,     0,     0,     0,  1162,  1163,   196,     0,     0,     0,
+   196,     0,   708,   196,     0,     0,     0,     0,     0,     0,
+     0,   229,     0,     0,     0,     0,   229,     0,   229,     0,
+     0,   119,     0,     0,  1081,     0,     0,    97,     0,   193,
+   229,   229,   196,   197,     0,     0,     0,     0,     0,   810,
+     0,  1098,     0,     0,     0,     0,   432,     0,     0,  1103,
+  1104,   223,     0,     0,     0,     0,     0,   708,     0,     0,
+     0,   208,   237,   237,     0,     0,     0,     0,   306,   306,
+   306,   306,   306,   306,   838,   839,     0,   197,     0,     0,
+     0,     0,     0,     0,     0,   197,     0,     0,     0,   197,
+  1140,     0,   197,     0,     0,    97,     0,  1144,  1146,     0,
+   230,     0,     0,   618,   198,   230,     0,   230,     0,   810,
+     0,     0,   191,     0,     0,   210,   238,   238,     0,   230,
+   230,   197,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,  1165,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   198,     0,
+     0,     0,     0,     0,  1173,  1174,   198,   306,    97,     0,
+   198,  1178,     0,   198,     0,     0,     0,   193,     0,     0,
+   465,   231,   789,  1092,     0,     0,   231,   303,   231,     0,
+     0,     0,   150,   151,   152,   153,   154,   155,     0,     0,
+   231,   231,   198,     0,   196,   459,     0,   459,   306,   156,
+   157,   158,   208,   694,     0,     0,     0,   740,     0,     0,
+     0,     0,     0,     0,     0,     0,   229,     0,     0,     0,
+     0,     0,     0,   159,     0,     0,     0,     0,     0,   306,
+   306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+   306,   306,   306,   306,   306,   306,   208,   306,     0,     0,
+     0,     0,     0,     0,   208,     0,   210,     0,   208,   824,
+     0,   208,     0,     0,     0,   168,  -248,     0,     0,   237,
+   830,     0,   303,     0,   237,     0,   237,   150,   151,   152,
+   153,   154,   155,   197,     0,     0,     0,     0,   237,   237,
+   208,     0,     0,     0,   156,   157,   158,     0,     0,     0,
+   210,     0,     0,     0,   306,   230,     0,     0,   210,     0,
+     0,     0,   210,     0,     0,   210,     0,     0,   159,     0,
+     0,     0,     0,   238,     0,     0,     0,     0,   238,     0,
+   238,     0,   196,     0,     0,     0,    77,   304,   305,     0,
+   171,   708,   238,   238,   210,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   198,     0,  -528,     0,     0,     0,
+   168,   343,     0,     0,     0,     0,   150,   151,   152,   153,
+   154,   155,     0,     0,     0,     0,   231,     0,     0,     0,
+     0,     0,   136,   156,   157,   158,     0,   137,   138,   139,
+     0,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+  -528,   624,     0,     0,     0,   149,     0,   159,     0,     0,
+   150,   151,   152,   153,   154,   155,     0,   936,     0,     0,
+     0,   197,     0,  -266,  -266,     0,     0,   156,   157,   158,
+     0,    77,   304,   305,     0,   171,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   168,
+     0,   159,   208,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    -1,     1,     0,
+     0,     0,     0,     0,   237,   161,   162,   163,   164,   165,
+   166,     0,     0,     0,     0,     0,     0,     0,     0,   167,
+     0,  -266,   198,   168,     0,     0,     0,   465,     0,     0,
+     0,     2,     0,     0,     0,     0,   210,     0,     0,     0,
+     0,     0,     3,     0,     0,     0,   306,     0,     0,     0,
+    77,   304,   305,     0,   171,     0,     0,     0,   238,   306,
+     0,     0,     0,     0,  -398,  -398,  -398,     0,     4,     0,
+     0,     0,  1038,     5,     6,     7,     0,     0,     0,     0,
+   306,     0,     0,     0,     0,     0,     0,     8,     9,    10,
+     0,     0,     0,     0,    77,   169,   170,     0,   171,   172,
+    82,     0,     0,     0,     0,     0,    11,    12,    13,     0,
+    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+   208,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+    33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+    53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+    73,    74,    75,    76,   210,    -2,     1,     0,     0,     0,
+    77,    78,    79,    80,     0,    81,    82,    83,     0,     0,
+     0,     0,     0,    20,    21,    22,    23,     0,    24,  -266,
+     0,     0,     0,    29,    30,     0,     0,    33,    34,     2,
+    36,    37,    38,    39,     0,     0,     0,     0,     0,     0,
+     3,     0,     0,     0,     0,    51,    52,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   926,     0,     0,     0,   659,   709,     0,   780,   183,
-     0,     0,     0,     0,     0,     0,     0,   659,     0,     0,
-     0,     0,     0,     0,   198,   184,     0,     0,     0,   122,
-   123,   124,     0,     0,   199,   127,   128,   129,   130,   131,
-   132,   200,  -427,  -427,   216,     0,     0,   201,  -427,   799,
-     0,     0,   135,   136,   137,   138,   139,   140,     0,     0,
-   808,     0,     0,     0,     0,  -241,     0,     0,   141,   142,
-   143,     0,     0,     0,     0,     0,     0,     0,     0,   193,
-     0,     0,     0,     0,     0,     0,     0,     0,   484,     0,
-     0,     0,   144,     0,     0,     0,     0,     0,   222,     0,
-     0,     0,     0,     0,     0,     0,   780,     0,     0,     0,
-     0,     0,     0,     0,  -427,   146,   147,   148,   149,   150,
-   151,     0,     0,     0,     0,   195,     0,     0,     0,   152,
-     0,     0,   999,   153,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   223,     0,     0,     0,     0,     0,
-     0,    -1,     1,     0,     0,     0,     0,     0,     0,     0,
-     0,   184,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,  -241,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     2,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     3,     0,   154,   155,   156,
-   202,   203,     0,   158,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   193,     0,  -349,  -349,  -349,
-     0,     4,     0,     0,     0,     5,     6,     7,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     8,
-     9,    10,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-    13,   195,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    23,     0,    24,    25,    26,    27,    28,    29,    30,
-    31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,     0,    77,    78,
-    79,    80,    -2,     1,     0,     0,     0,     0,     0,     0,
+     0,     0,  -398,  -398,  -398,     0,     4,     0,     0,     0,
+    76,     5,     6,     7,     0,     0,     0,     0,     0,     0,
+    80,     0,     0,     0,     0,     8,     9,    10,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,  -241,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     2,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     3,     0,     0,     0,
+     0,     0,     0,     0,    11,    12,    13,     0,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    23,     0,    24,
+    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+    45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+    55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,     0,     0,     0,     0,     0,     0,    77,    78,
+    79,    80,   136,    81,    82,    83,     0,   137,   138,   139,
+     0,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+  -528,   534,     0,     0,     0,   149,     0,     0,     0,     0,
+   150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
+     0,     0,     0,  -266,  -266,     0,     3,   156,   157,   158,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,  -349,  -349,
-  -349,     0,     4,     0,     0,     0,     5,     6,     7,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,  -398,  -398,
+  -398,   159,     4,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     8,     9,    10,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    11,
-    12,    13,     0,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,     0,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,    33,    34,    35,    36,    37,    38,     0,
+     0,     0,     0,     0,     0,   161,   162,   163,   164,   165,
+   166,     0,     0,     0,     0,     0,     0,     0,     0,   167,
+    11,    12,    13,   168,    14,    15,    16,    17,    18,    19,
+    20,    21,    22,    23,     0,    24,    25,    26,    27,    28,
+    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
     39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
     49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
     59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,   121,    77,
-    78,    79,    80,   122,   123,   124,     0,   125,   126,   127,
-   128,   129,   130,   131,   132,   133,  -479,   552,     0,     0,
-     0,   134,     0,     0,     0,     0,   135,   136,   137,   138,
-   139,   140,     0,     0,     0,     0,     0,     0,     0,  -241,
-     0,     3,   141,   142,   143,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,  -349,  -349,  -349,   144,     4,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   146,
-   147,   148,   149,   150,   151,     0,     0,     0,     0,     0,
-     0,     0,     0,   152,    11,    12,    13,   153,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,     0,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-    35,    36,    37,    38,     0,    39,    40,    41,    42,    43,
-    44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-    54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,   154,   155,   156,   157,    78,    79,   553,   121,     0,
-     0,     0,     0,   122,   123,   124,     0,   125,   126,   127,
-   128,   129,   130,   131,   132,   133,  -479,     0,     0,     0,
-     0,   134,     0,     0,     0,     0,   135,   136,   137,   138,
-   139,   140,     0,     0,     0,     0,     0,     0,     0,  -241,
-     0,     0,   141,   142,   143,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,  -241,  -241,  -241,   144,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   146,
-   147,   148,   149,   150,   151,     0,     0,     0,     0,     0,
-     0,     0,     0,   152,  -241,  -241,  -241,   153,  -241,  -241,
-  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,     0,  -241,
-  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,
-  -241,  -241,  -241,  -241,     0,  -241,  -241,  -241,  -241,  -241,
-  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,
-  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,
-  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,
-  -241,   154,   155,   156,   157,    78,  -241,   158,   198,     0,
-     0,     0,     0,   122,   123,   124,     0,     0,   199,   127,
-   128,   129,   130,   131,   132,   200,  -479,  -483,     0,     0,
-     0,   201,     0,     0,     0,     0,   135,   136,   137,   138,
-   139,   140,     0,     0,     0,     0,     0,     0,     0,  -241,
-     0,     0,   141,   142,   143,     0,     0,     0,     0,     0,
+    69,    70,    71,    72,    73,    74,    75,    76,     0,     0,
+     0,     0,     0,     0,    77,   169,   535,    80,   171,   172,
+    82,    83,   136,     0,     0,     0,     0,   137,   138,   139,
+     0,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+  -528,     0,     0,     0,     0,   149,     0,     0,     0,     0,
+   150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
+     0,     0,     0,  -266,  -266,     0,     0,   156,   157,   158,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,  -241,  -241,  -241,   144,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,  -266,  -266,
+  -266,   159,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   146,
-   147,   148,   149,   150,   151,     0,     0,     0,     0,     0,
-     0,     0,     0,   152,  -241,  -241,  -241,   153,  -241,  -241,
-  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,     0,  -241,
-  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,
-  -241,  -241,  -241,  -241,     0,  -241,  -241,  -241,  -241,  -241,
-  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,
-  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,
-  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,
-  -241,   154,   155,   156,   202,   203,  -241,   158,   121,     0,
-     0,     0,     0,   122,   123,   124,     0,   125,   126,   127,
-   128,   129,   130,   131,   132,   133,  -479,     0,     0,     0,
-     0,   134,     0,     0,     0,     0,   135,   136,   137,   138,
-   139,   140,     0,     0,     0,     0,     0,     0,     0,  -241,
-   121,     0,   141,   142,   143,   122,   123,   124,     0,   125,
-   126,   127,   128,   129,   130,   131,   132,   133,  -479,     0,
-     0,     0,     0,   134,     0,     0,   144,     0,   135,   136,
-   137,   138,   139,   140,     0,     0,     0,     0,     0,     0,
-     0,  -241,     0,     0,   141,   142,   143,     0,   145,   146,
-   147,   148,   149,   150,   151,     0,     0,     0,     0,     0,
-     0,     0,     0,   152,     0,     0,     0,   153,   144,     0,
+     0,     0,     0,     0,     0,   161,   162,   163,   164,   165,
+   166,     0,     0,     0,     0,     0,     0,     0,     0,   167,
+  -266,  -266,  -266,   168,  -266,  -266,  -266,  -266,  -266,  -266,
+  -266,  -266,  -266,  -266,     0,  -266,  -266,  -266,  -266,  -266,
+  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,
+  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,
+  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,
+  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,
+  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,     0,     0,
+     0,     0,     0,     0,    77,   169,   170,  -266,   171,   172,
+    82,  -266,   213,     0,     0,     0,     0,   137,   138,   139,
+     0,     0,   214,   142,   143,   144,   145,   146,   147,   215,
+  -528,  -532,     0,     0,     0,   216,     0,     0,     0,     0,
+   150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
+     0,     0,     0,  -266,  -266,     0,     0,   156,   157,   158,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,  -266,  -266,
+  -266,   159,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-  -454,   146,   147,   148,   149,   150,   151,     0,     0,     0,
-     0,     0,     0,     0,     0,   152,     0,     0,     0,   153,
+     0,     0,     0,     0,     0,   161,   162,   163,   164,   165,
+   166,     0,     0,     0,     0,     0,     0,     0,     0,   167,
+  -266,  -266,  -266,   168,  -266,  -266,  -266,  -266,  -266,  -266,
+  -266,  -266,  -266,  -266,     0,  -266,  -266,  -266,  -266,  -266,
+  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,
+  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,
+  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,
+  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,
+  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,     0,     0,
+     0,     0,     0,     0,    77,   169,   170,  -266,   171,   217,
+   218,  -266,   213,     0,     0,     0,     0,   137,   138,   139,
+     0,     0,   214,   142,   143,   144,   145,   146,   147,   215,
+  -476,  -476,     0,     0,     0,   216,  -476,     0,     0,     0,
+   150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
+     0,     0,     0,  -266,  -266,   136,     0,   156,   157,   158,
+   137,   138,   139,     0,   140,   141,   142,   143,   144,   145,
+   146,   147,   148,  -528,     0,     0,     0,     0,   149,     0,
+     0,   159,     0,   150,   151,   152,   153,   154,   155,     0,
+     0,     0,     0,     0,     0,     0,  -266,  -266,     0,     0,
+   156,   157,   158,     0,  -476,   161,   162,   163,   164,   165,
+   166,     0,     0,     0,     0,     0,     0,     0,     0,   167,
+     0,     0,     0,   168,   159,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   160,   161,   162,
+   163,   164,   165,   166,     0,     0,     0,     0,     0,     0,
+     0,     0,   167,     0,     0,     0,   168,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   154,   155,   156,   157,    78,     0,   158,     0,   198,
-     0,     0,     0,     0,   122,   123,   124,     0,     0,   199,
-   127,   128,   129,   130,   131,   132,   200,  -479,  -483,     0,
-     0,     0,   201,     0,     0,     0,     0,   135,   136,   137,
-   138,   139,   140,   154,   155,   156,   157,    78,     0,   158,
-  -241,   121,     0,   141,   142,   143,   122,   123,   124,     0,
-   125,   126,   127,   128,   129,   130,   131,   132,   133,  -479,
-   642,     0,     0,     0,   134,     0,     0,   144,     0,   135,
-   136,   137,   138,   139,   140,     0,     0,     0,     0,     0,
-     0,     0,  -241,     0,     0,   141,   142,   143,     0,  -423,
-   146,   147,   148,   149,   150,   151,     0,     0,     0,     0,
-     0,     0,     0,     0,   152,     0,     0,     0,   153,   144,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    77,   169,   170,     0,   171,   217,
+   218,     0,     0,   136,     0,     0,     0,     0,   137,   138,
+   139,     0,   140,   141,   142,   143,   144,   145,   146,   147,
+   148,  -528,     0,     0,     0,     0,   149,     0,     0,     0,
+     0,   150,   151,   152,   153,   154,   155,    77,   169,   170,
+     0,   171,   172,    82,  -266,  -266,   213,     0,   156,   157,
+   158,   137,   138,   139,     0,     0,   214,   142,   143,   144,
+   145,   146,   147,   215,  -528,  -532,     0,     0,     0,   216,
+     0,     0,   159,     0,   150,   151,   152,   153,   154,   155,
+     0,     0,     0,     0,     0,     0,     0,  -266,  -266,     0,
+     0,   156,   157,   158,     0,  -503,   161,   162,   163,   164,
+   165,   166,     0,     0,     0,     0,     0,     0,     0,     0,
+   167,     0,     0,     0,   168,   159,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   146,   147,   148,   149,   150,   151,     0,     0,
-     0,     0,     0,     0,     0,     0,   152,     0,     0,     0,
-   153,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,  -472,   161,
+   162,   163,   164,   165,   166,     0,     0,     0,     0,     0,
+     0,     0,     0,   167,     0,     0,     0,   168,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   154,   155,   156,   202,   203,     0,   158,     0,
-   198,     0,     0,     0,     0,   122,   123,   124,     0,     0,
-   199,   127,   128,   129,   130,   131,   132,   200,  -479,  -483,
-     0,     0,     0,   201,     0,     0,     0,     0,   135,   136,
-   137,   138,   139,   140,   154,   155,   156,   157,    78,     0,
-   158,  -241,   121,     0,   141,   142,   143,   122,   123,   124,
-     0,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-  -479,     0,     0,     0,     0,   134,     0,     0,   144,     0,
-   135,   136,   137,   138,   139,   140,     0,     0,     0,     0,
-     0,     0,     0,  -241,     0,     0,   141,   142,   143,     0,
-     0,   146,   147,   148,   149,   150,   151,     0,     0,     0,
-     0,     0,     0,     0,     0,   152,     0,     0,     0,   153,
-   144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   146,   147,   148,   149,   150,   151,     0,
-     0,     0,     0,     0,     0,     0,     0,   152,     0,     0,
-     0,   153,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    77,   169,   170,     0,   171,
+   172,    82,     0,     0,   213,     0,     0,     0,     0,   137,
+   138,   139,     0,     0,   214,   142,   143,   144,   145,   146,
+   147,   215,  -528,  -532,     0,     0,     0,   216,     0,     0,
+     0,     0,   150,   151,   152,   153,   154,   155,    77,   169,
+   170,     0,   171,   217,   218,  -266,  -266,   136,     0,   156,
+   157,   158,   137,   138,   139,     0,   140,   141,   142,   143,
+   144,   145,   146,   147,   148,  -528,     0,     0,     0,     0,
+   149,     0,     0,   159,     0,   150,   151,   152,   153,   154,
+   155,     0,     0,     0,     0,     0,     0,     0,  -266,  -266,
+     0,     0,   156,   157,   158,     0,     0,   161,   162,   163,
+   164,   165,   166,     0,     0,     0,     0,     0,     0,     0,
+     0,   167,     0,     0,     0,   168,   159,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   154,   155,   156,   202,   203,     0,   158,
-     0,     0,     0,     0,   122,   123,   124,     0,   125,   126,
-   127,   128,   129,   130,   131,   132,   200,  -479,   568,     0,
-     0,     0,   363,     0,     0,     0,     0,   135,   136,   137,
-   138,   139,   140,     0,     0,   154,   155,   156,   157,    78,
-  -241,   158,     3,   141,   142,   143,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   144,     4,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   146,   147,   148,   149,   150,   151,     0,     0,     0,     0,
-     0,     0,     0,     0,   569,    11,    12,    13,   153,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,     0,
-    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-    34,    35,    36,    37,    38,     0,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-    53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-    73,    74,   154,   155,   156,   157,    78,    79,   553,   122,
-   123,   124,     0,   125,   126,   127,   128,   129,   130,   131,
-   132,   200,  -479,   643,     0,     0,     0,   363,     0,     0,
-     0,     0,   135,   136,   137,   138,   139,   140,     0,     0,
-     0,     0,     0,     0,     0,  -241,     0,     3,   141,   142,
-   143,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   144,     4,     0,     0,     0,     0,     0,     0,
+   161,   162,   163,   164,   165,   166,     0,     0,     0,     0,
+     0,     0,     0,     0,   167,     0,     0,     0,   168,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   146,   147,   148,   149,   150,
-   151,     0,     0,     0,     0,     0,     0,     0,     0,   152,
-    11,    12,    13,   153,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    23,     0,    24,    25,    26,    27,    28,
-    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-     0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-    48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-    58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-    68,    69,    70,    71,    72,    73,    74,   154,   155,   156,
-   157,    78,    79,   553,   122,   123,   124,     0,   125,   126,
-   127,   128,   129,   130,   131,   132,   200,  -479,   654,     0,
-     0,     0,   363,     0,     0,     0,     0,   135,   136,   137,
-   138,   139,   140,     0,     0,     0,     0,     0,     0,     0,
-  -241,     0,     3,   141,   142,   143,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   144,     4,     0,
+     0,     0,     0,     0,     0,     0,    77,   169,   170,     0,
+   171,   217,   218,     0,     0,     0,     0,     0,     0,     0,
+   137,   138,   139,     0,   140,   141,   142,   143,   144,   145,
+   146,   147,   215,  -528,   551,     0,     0,     0,   343,     0,
+     0,     0,     0,   150,   151,   152,   153,   154,   155,    77,
+   169,   170,     0,   171,   172,    82,  -266,  -266,     0,     3,
+   156,   157,   158,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   159,     4,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   146,   147,   148,   149,   150,   151,     0,     0,     0,     0,
-     0,     0,     0,     0,   655,    11,    12,    13,   153,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,     0,
-    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-    34,    35,    36,    37,    38,     0,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-    53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-    73,    74,   154,   155,   156,   157,    78,    79,   553,   122,
-   123,   124,     0,   125,   126,   127,   128,   129,   130,   131,
-   132,   200,  -479,   653,     0,     0,     0,   363,     0,     0,
-     0,     0,   135,   136,   137,   138,   139,   140,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   141,   142,
-   143,   122,   123,   124,     0,   125,   126,   127,   128,   129,
-   130,   131,   132,   200,  -479,   657,     0,     0,     0,   363,
-     0,     0,   144,     0,   135,   136,   137,   138,   139,   140,
+     0,     0,     0,     0,     0,     0,     0,     0,   161,   162,
+   163,   164,   165,   166,     0,     0,     0,     0,     0,     0,
+     0,     0,   552,    11,    12,    13,   168,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    23,     0,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,     0,     0,     0,     0,     0,     0,    77,   169,   535,
+    80,   171,   172,    82,    83,   137,   138,   139,     0,   140,
+   141,   142,   143,   144,   145,   146,   147,   215,  -528,   625,
+     0,     0,     0,   343,     0,     0,     0,     0,   150,   151,
+   152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
+     0,  -266,  -266,     0,     3,   156,   157,   158,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   141,   142,   143,     0,     0,   146,   147,   148,   149,   150,
-   151,     0,     0,     0,     0,     0,     0,     0,     0,   152,
-     0,     0,     0,   153,   144,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   159,
+     4,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   146,   147,   148,
-   149,   150,   151,     0,     0,     0,     0,     0,     0,     0,
-     0,   658,     0,     0,     0,   153,     0,     0,     0,     0,
+     0,     0,     0,   161,   162,   163,   164,   165,   166,     0,
+     0,     0,     0,     0,     0,     0,     0,   167,    11,    12,
+    13,   168,    14,    15,    16,    17,    18,    19,    20,    21,
+    22,    23,     0,    24,    25,    26,    27,    28,    29,    30,
+    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+    61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76,     0,     0,     0,     0,
+     0,     0,    77,   169,   535,    80,   171,   172,    82,    83,
+   137,   138,   139,     0,   140,   141,   142,   143,   144,   145,
+   146,   147,   215,  -528,   637,     0,     0,     0,   343,     0,
+     0,     0,     0,   150,   151,   152,   153,   154,   155,     0,
+     0,     0,     0,     0,     0,     0,  -266,  -266,     0,     3,
+   156,   157,   158,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   154,   155,   156,
-   157,    78,     0,   158,     0,     0,     0,   122,   123,   124,
-     0,   125,   126,   127,   128,   129,   130,   131,   132,   200,
-  -479,   708,     0,     0,     0,   363,     0,     0,     0,     0,
-   135,   136,   137,   138,   139,   140,     0,     0,     0,   154,
-   155,   156,   157,    78,     0,   158,   141,   142,   143,   122,
-   123,   124,     0,   125,   126,   127,   128,   129,   130,   131,
-   132,   200,  -479,   761,     0,     0,     0,   363,     0,     0,
-   144,     0,   135,   136,   137,   138,   139,   140,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   141,   142,
-   143,     0,     0,   146,   147,   148,   149,   150,   151,     0,
-     0,     0,     0,     0,     0,     0,     0,   152,     0,     0,
-     0,   153,   144,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   159,     4,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   146,   147,   148,   149,   150,
-   151,     0,     0,     0,     0,     0,     0,     0,     0,   152,
-     0,     0,     0,   153,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   161,   162,
+   163,   164,   165,   166,     0,     0,     0,     0,     0,     0,
+     0,     0,   638,    11,    12,    13,   168,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    23,     0,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,     0,     0,     0,     0,     0,     0,    77,   169,   535,
+    80,   171,   172,    82,    83,   137,   138,   139,     0,   140,
+   141,   142,   143,   144,   145,   146,   147,   215,  -528,   636,
+     0,     0,     0,   343,     0,     0,     0,     0,   150,   151,
+   152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   156,   157,   158,   137,   138,
+   139,     0,   140,   141,   142,   143,   144,   145,   146,   147,
+   215,  -528,   640,     0,     0,     0,   343,     0,     0,   159,
+     0,   150,   151,   152,   153,   154,   155,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   156,   157,
+   158,     0,     0,   161,   162,   163,   164,   165,   166,     0,
+     0,     0,     0,     0,     0,     0,     0,   167,     0,     0,
+     0,   168,   159,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   154,   155,   156,   157,    78,
-     0,   158,     0,     0,     0,   122,   123,   124,     0,   125,
-   126,   127,   128,   129,   130,   131,   132,   200,  -479,   762,
-     0,     0,     0,   363,     0,     0,     0,     0,   135,   136,
-   137,   138,   139,   140,     0,     0,     0,   154,   155,   156,
-   157,    78,     0,   158,   141,   142,   143,   122,   123,   124,
-     0,   125,   126,   127,   128,   129,   130,   131,   132,   200,
-  -479,   764,     0,     0,     0,   363,     0,     0,   144,     0,
-   135,   136,   137,   138,   139,   140,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   141,   142,   143,     0,
-     0,   146,   147,   148,   149,   150,   151,     0,     0,     0,
-     0,     0,     0,     0,     0,   763,     0,     0,     0,   153,
-   144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   161,   162,   163,   164,
+   165,   166,     0,     0,     0,     0,     0,     0,     0,     0,
+   641,   137,   138,   139,   168,   140,   141,   142,   143,   144,
+   145,   146,   147,   215,  -528,   692,     0,     0,     0,   343,
+     0,     0,     0,     0,   150,   151,   152,   153,   154,   155,
+     0,     0,    77,   169,   170,     0,   171,   172,    82,     0,
+     0,   156,   157,   158,   137,   138,   139,     0,   140,   141,
+   142,   143,   144,   145,   146,   147,   215,  -528,   770,     0,
+     0,     0,   343,     0,     0,   159,     0,   150,   151,   152,
+   153,   154,   155,     0,     0,    77,   169,   170,     0,   171,
+   172,    82,     0,     0,   156,   157,   158,     0,     0,   161,
+   162,   163,   164,   165,   166,     0,     0,     0,     0,     0,
+     0,     0,     0,   167,     0,     0,     0,   168,   159,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   146,   147,   148,   149,   150,   151,     0,
-     0,     0,     0,     0,     0,     0,     0,   152,     0,     0,
-     0,   153,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   154,   155,   156,   157,    78,     0,   158,
-     0,     0,     0,   122,   123,   124,     0,   125,   126,   127,
-   128,   129,   130,   131,   132,   200,  -479,   881,     0,     0,
-     0,   363,     0,     0,     0,     0,   135,   136,   137,   138,
-   139,   140,     0,     0,     0,   154,   155,   156,   157,    78,
-     0,   158,   141,   142,   143,   122,   123,   124,     0,   125,
-   126,   127,   128,   129,   130,   131,   132,   200,  -479,     0,
-     0,     0,     0,   363,     0,     0,   144,     0,   135,   136,
-   137,   138,   139,   140,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   141,   142,   143,     0,     0,   146,
-   147,   148,   149,   150,   151,     0,     0,     0,     0,     0,
-     0,     0,     0,   152,     0,     0,     0,   153,   144,     0,
+     0,     0,   161,   162,   163,   164,   165,   166,     0,     0,
+     0,     0,     0,     0,     0,     0,   167,   137,   138,   139,
+   168,   140,   141,   142,   143,   144,   145,   146,   147,   215,
+  -528,   771,     0,     0,     0,   343,     0,     0,     0,     0,
+   150,   151,   152,   153,   154,   155,     0,     0,    77,   169,
+   170,     0,   171,   172,    82,     0,     0,   156,   157,   158,
+   137,   138,   139,     0,   140,   141,   142,   143,   144,   145,
+   146,   147,   215,  -528,   773,     0,     0,     0,   343,     0,
+     0,   159,     0,   150,   151,   152,   153,   154,   155,     0,
+     0,    77,   169,   170,     0,   171,   172,    82,     0,     0,
+   156,   157,   158,     0,     0,   161,   162,   163,   164,   165,
+   166,     0,     0,     0,     0,     0,     0,     0,     0,   772,
+     0,     0,     0,   168,   159,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   161,   162,
+   163,   164,   165,   166,     0,     0,     0,     0,     0,     0,
+     0,     0,   167,   137,   138,   139,   168,   140,   141,   142,
+   143,   144,   145,   146,   147,   215,  -528,   895,     0,     0,
+     0,   343,     0,     0,     0,     0,   150,   151,   152,   153,
+   154,   155,     0,     0,    77,   169,   170,     0,   171,   172,
+    82,     0,     0,   156,   157,   158,   137,   138,   139,     0,
+   140,   141,   142,   143,   144,   145,   146,   147,   215,  -528,
+     0,     0,     0,     0,   343,     0,     0,   159,     0,   150,
+   151,   152,   153,   154,   155,     0,     0,    77,   169,   170,
+     0,   171,   172,    82,     0,     0,   156,   157,   158,     0,
+     0,   161,   162,   163,   164,   165,   166,     0,     0,     0,
+     0,     0,     0,     0,     0,   167,     0,     0,     0,   168,
+   159,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   146,   147,   148,   149,   150,   151,   289,     0,     0,
-     0,     0,     0,     0,     0,   152,     0,     0,     0,   153,
+     0,     0,     0,     0,   161,   162,   163,   164,   165,   166,
+  -132,     0,     0,     0,     0,  -132,     0,     0,   167,     0,
+     0,     0,   168,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     3,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     3,     0,     0,     0,     0,     0,     0,
-     0,   154,   155,   156,   157,    78,     0,   158,     0,     0,
-     0,     0,     0,     0,     0,  -349,  -349,  -349,     0,     4,
+    77,   169,   170,     0,   171,   172,    82,     0,     0,     0,
+     0,     0,     4,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,  -531,
+     0,     0,     0,    77,   169,   170,     0,   171,   172,    82,
+    11,    12,    13,     0,    14,    15,    16,    17,    18,    19,
+    20,    21,    22,    23,     0,    24,    25,    26,    27,    28,
+    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+    69,    70,    71,    72,    73,    74,    75,    76,     0,     0,
+     0,     0,     0,     0,     0,     0,   131,    80,    11,    12,
+    13,    83,    14,    15,    16,    17,    18,    19,    20,    21,
+    22,    23,     0,    24,    25,    26,    27,    28,    29,    30,
+    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+    61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76,  -671,     0,     0,     0,
+     0,     0,     0,     0,   131,    80,     0,     0,     0,    83,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   154,   155,   156,   157,    78,     0,   158,
-     0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-     0,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-    33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
-    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-    72,    73,    74,   289,     0,     0,     0,     0,    79,    80,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     3,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,  -673,  -673,  -673,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     4,     0,     0,     0,     0,
+  -673,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,  -613,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,  -673,  -673,  -673,     0,  -673,  -673,  -673,
+  -673,  -673,  -673,  -673,  -673,  -673,  -673,     0,  -673,  -673,
+  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,
+  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,
+  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,
+  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,
+  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,  -673,
+  -673,     0,     0,     0,     0,     0,   789,     0,     0,     0,
+  -673,   303,     0,     0,  -673,     0,   150,   151,   152,   153,
+   154,   155,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   156,   157,   158,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    11,    12,    13,     0,    14,    15,    16,    17,
-    18,    19,    20,    21,    22,    23,     0,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,     0,    39,    40,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,     0,
-     0,  -111,     0,     0,    79,    80,  -111,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   159,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     3,     0,   779,     0,
-     0,     0,     0,   324,     0,     0,     0,     0,   135,   136,
-   137,   138,   139,   140,     0,     0,     0,     0,     0,     0,
-     0,     0,     4,     0,   141,   142,   143,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   144,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    11,
-    12,    13,     0,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,     0,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,    33,    34,    35,    36,    37,    38,   153,
-    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,   284,     0,     0,     0,
-     0,    79,    80,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     3,     0,   325,   326,   156,     0,     0,     0,   158,
+  -266,     0,     0,     0,     0,     0,     0,     0,     0,   168,
+     2,   303,     0,     0,   597,     0,   150,   151,   152,   153,
+   154,   155,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   156,   157,   158,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     4,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   159,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,  -482,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    11,    12,    13,     0,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,     0,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-    35,    36,    37,    38,     0,    39,    40,    41,    42,    43,
-    44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-    54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,  -241,     0,     0,     0,     0,    79,    80,    11,    12,
-    13,     2,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    23,     0,    24,    25,    26,    27,    28,    29,    30,
-    31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,     0,     0,     0,     0,     0,
-    79,    80,     0,     0,    11,    12,    13,     0,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,     0,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-    35,    36,    37,    38,     0,    39,    40,    41,    42,    43,
+    77,   304,   305,     0,   171,    11,    12,    13,     0,    14,
+    15,    16,    17,    18,    19,    20,    21,    22,    23,   168,
+    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
     44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
     54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
     64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,   324,    77,    78,    79,    80,   135,   136,
-   137,   138,   139,   140,     0,     0,     0,     0,     0,     0,
-     0,  -241,   324,   513,   141,   142,   143,   135,   136,   137,
-   138,   139,   140,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   141,   142,   143,     0,   324,   144,     0,
-   617,     0,   135,   136,   137,   138,   139,   140,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   144,   141,   142,
-   143,     0,   324,     0,     0,   694,     0,   135,   136,   137,
-   138,   139,   140,     0,     0,     0,     0,     0,     0,   153,
-     0,     0,   144,   141,   142,   143,     0,   324,   924,     0,
-     0,     0,   135,   136,   137,   138,   139,   140,   153,     0,
-     0,     0,     0,     0,     0,     0,   324,   144,   141,   142,
-   143,   135,   136,   137,   138,   139,   140,     0,     0,     0,
-     0,     0,     0,   153,     0,     0,     0,   141,   142,   143,
-     0,   352,   144,     0,     0,     0,   135,   136,   137,   138,
-   139,   140,     0,   325,   326,   156,     0,     0,   153,   158,
-     0,   144,   141,   142,   143,     0,     0,     0,     0,     0,
-     0,     0,   325,   326,   156,     0,     0,     0,   158,     0,
-     0,     0,     0,   153,   640,     0,   144,     0,     0,   135,
-   136,   137,   138,   139,   140,     0,     0,   325,   326,   156,
-     0,     0,   153,   158,     0,   141,   142,   143,     0,   711,
-     0,     0,     0,     0,   712,   713,   714,   715,   716,   717,
-     0,     0,   325,   326,   156,     0,     0,   153,   158,   144,
-   141,   718,   719,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   325,   326,   156,
-     0,     0,     0,   158,   720,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   325,   326,   156,     0,
-   153,     0,   158,     0,     0,     0,     0,     0,     0,     0,
+    74,    75,    76,     0,     0,     0,     0,     0,     0,    77,
+    78,    79,    80,     0,    81,    82,    83,     0,     0,     0,
+    77,   304,   305,   303,   171,     0,   678,     0,   150,   151,
+   152,   153,   154,   155,   303,   934,     0,     0,     0,   150,
+   151,   152,   153,   154,   155,   156,   157,   158,     0,     0,
+     0,     0,     0,     0,   303,  -248,   156,   157,   158,   150,
+   151,   152,   153,   154,   155,     0,     0,     0,     0,   159,
+     0,     0,     0,     0,     0,     0,   156,   157,   158,   303,
+   159,     0,     0,     0,   150,   151,   152,   153,   154,   155,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   325,   326,   156,     0,   153,     0,   158,     0,     0,
-     0,  -169,     0,     0,     0,     0,     0,     0,     0,     0,
+   159,   156,   157,   158,     0,     0,     0,     0,   332,     0,
+     0,   168,     0,   150,   151,   152,   153,   154,   155,     0,
+     0,     0,   168,     0,     0,   159,     0,     0,   620,     0,
+   156,   157,   158,   150,   151,   152,   153,   154,   155,   622,
+     0,     0,   168,     0,   150,   151,   152,   153,   154,   155,
+   156,   157,   158,     0,   159,     0,     0,     0,     0,     0,
+     0,   156,   157,   158,     0,     0,     0,   168,     0,     0,
+     0,     0,     0,     0,   159,     0,     0,     0,     0,     0,
+     0,     0,    77,   304,   305,   159,   171,     0,     0,     0,
+     0,     0,     0,    77,   304,   305,   168,   171,   695,     0,
+     0,     0,     0,   696,   697,   698,   699,   700,   701,     0,
+     0,     0,     0,    77,   304,   305,   168,   171,     0,     0,
+   156,   702,   703,     0,     0,     0,     0,   168,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    77,   304,
+   305,     0,   171,     0,   704,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    77,   304,   305,
+     0,   171,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   168,    77,   304,   305,
+     0,   171,     0,     0,     0,  -192,  -192,     0,    77,   304,
+   305,     0,   171,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   325,   326,   156,     0,     0,     0,
-   158,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   325,
-   721,   722,     0,     0,     0,   723,    11,    12,    13,     0,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-     0,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-    33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
-    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-    72,    73,    74,     3,     0,     0,     0,     0,    79,    80,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,  -349,  -349,  -349,     0,     4,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    77,   705,   706,
+     0,   171,    11,    12,    13,     0,    14,    15,    16,    17,
+    18,    19,    20,    21,    22,    23,     0,    24,    25,    26,
+    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+     3,     0,     0,     0,     0,     0,     0,     0,   131,    80,
+     0,     0,     0,    83,     0,     0,     0,     0,     0,     0,
+     0,     0,  -398,  -398,  -398,     0,     4,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-     0,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-    33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
-    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-    72,    73,    74,     3,     0,     0,     0,     0,    79,    80,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     4,
+     0,     0,     0,     0,    11,    12,    13,     0,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    23,     0,    24,
+    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+    45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+    55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,     3,     0,     0,     0,     0,     0,     0,     0,
+   131,    80,     0,     0,     0,    83,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     4,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
     14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
      0,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-    33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
-    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-    72,    73,    74,  -349,  -349,  -349,     0,     0,    79,    80,
+    33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+    53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+    73,    74,    75,    76,     3,     0,     0,     0,     0,     0,
+    77,  1043,   131,    80,     0,     0,     0,    83,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     4,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    11,    12,    13,     0,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,     0,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-    35,    36,    37,    38,     0,    39,    40,    41,    42,    43,
-    44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-    54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,  -621,  -621,  -621,     0,     0,    79,    80,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,  -621,
+     0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
+    13,     0,    14,    15,    16,    17,    18,    19,    20,    21,
+    22,    23,     0,    24,    25,    26,    27,    28,    29,    30,
+    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+    61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76,  -398,  -398,  -398,     0,
+     0,     0,     0,     0,   131,    80,     0,     0,     0,    83,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,  -621,  -621,  -621,     0,  -621,  -621,  -621,  -621,
-  -621,  -621,  -621,  -621,  -621,  -621,     0,  -621,  -621,  -621,
-  -621,  -621,  -621,  -621,  -621,  -621,  -621,  -621,  -621,  -621,
-  -621,  -621,     0,  -621,  -621,  -621,  -621,  -621,  -621,  -621,
-  -621,  -621,  -621,  -621,  -621,  -621,  -621,  -621,  -621,  -621,
-  -621,  -621,  -621,  -621,  -621,  -621,  -621,  -621,  -621,  -621,
-  -621,  -621,  -621,  -621,  -621,  -621,  -621,  -621,  -621,     8,
-     9,    10,     0,     0,  -621,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
     13,     0,    14,    15,    16,    17,    18,    19,    20,    21,
     22,    23,     0,    24,    25,    26,    27,    28,    29,    30,
-    31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,     0,     0,     0,     0,     0,
-    79,    80,    11,    12,    13,     0,    14,    15,    16,    17,
-    18,    19,    20,    21,    22,    23,     0,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,     0,    39,    40,    41,    42,    43,    44,    45,
+    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+    61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76,     8,     9,    10,     0,
+     0,     0,     0,     0,   131,    80,     0,     0,     0,    83,
+     0,     0,     0,     0,     0,    11,    12,    13,     0,    14,
+    15,    16,    17,    18,    19,    20,    21,    22,    23,     0,
+    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+    44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+    54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+    74,    75,    76,     0,     0,     0,     0,     0,     0,     0,
+     0,   131,    80,    11,    12,    13,    83,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    23,     0,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
     56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,     0,
-     0,     0,     0,     0,    79,    80
+    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,     0,     0,     0,     0,     0,     0,     0,     0,   131,
+    80,     0,     0,     0,    83
 };
 
 static const short yycheck[] = {     0,
-     0,   105,     3,   460,     0,   361,   299,   615,   492,   363,
-    11,    12,     2,   316,   410,   546,   470,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-    41,    42,    43,   122,   408,   648,   409,    48,    49,    50,
-    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-    61,    62,    63,    64,    88,   619,     8,     0,   443,   759,
-     3,   398,   399,   318,     7,   406,   407,   785,   548,     0,
-    81,    81,    26,    22,    18,    81,   442,   791,   400,   401,
-    34,   648,   446,   648,    24,    34,    21,    24,    99,   702,
-    25,   771,   779,   201,   105,   782,    18,    34,   206,   556,
-   208,     5,   895,   114,   115,   116,    24,   648,   119,     9,
-    10,   111,   220,    48,    49,   572,    34,     0,    26,   119,
-     3,    25,     5,   134,   490,    21,    34,    18,   668,    28,
-   141,    27,   696,    24,    28,   702,   600,   702,    81,    18,
-  1011,  1012,    21,    34,    43,   402,   403,   404,   405,    43,
-    81,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,   702,   105,     5,   889,   879,     6,     7,   648,    85,
-    86,    34,     9,    10,   874,   968,   119,    84,   212,    85,
-    86,   899,   134,    97,    18,    99,   129,   101,    21,   103,
-   201,     8,   686,   107,   497,   882,    24,  1068,    81,    24,
-  1071,    21,    27,   117,   118,  1074,  1075,    27,   888,    34,
-   890,   575,    95,    96,   599,    98,   471,     8,    32,    33,
-   174,   175,   702,   177,   178,   174,   175,   179,   177,   178,
-   770,    19,   598,   773,    24,   187,   119,   174,   175,   191,
-    41,   193,   648,  1114,   107,   108,   160,     5,  1117,    24,
-   975,    26,   977,     5,    55,   621,   174,   175,   174,   175,
-     5,   135,   136,   137,   138,   139,   140,    25,   174,   175,
-   222,   282,   361,    25,   648,   648,   287,   580,   288,    24,
-    25,    26,   595,   174,   175,    48,    49,   298,   299,    34,
-   301,   302,   298,   980,    24,   913,   702,    25,    26,     5,
-    28,   201,   796,    24,   315,    41,   206,   648,   208,   315,
-   321,   648,    24,   324,     8,    43,   857,   134,    18,    55,
-   220,   221,   625,    21,    25,    26,   648,    25,   702,   702,
-   438,   342,   174,   175,    18,   177,   178,   640,    24,    23,
-    26,    39,   342,   134,    24,   909,   959,    27,    34,   174,
-   175,   176,   363,   442,    34,   298,    52,    53,   301,   302,
-   303,   702,   179,   886,   201,   702,   889,    20,    21,   206,
-   187,   208,   315,   287,   191,    24,   193,   291,   321,   859,
-   702,    16,   648,   220,   221,   419,   174,   175,   179,   177,
-   178,   648,   959,    16,   959,   309,   187,    26,   312,    28,
-   191,   490,   193,    21,    34,   222,   320,    25,   711,   323,
-   776,    26,    18,    28,    43,    21,   174,   175,   959,   177,
-   178,    16,   174,   175,   434,   177,   178,    16,    43,   174,
-   175,   222,   177,   178,   445,  1094,   702,   448,    15,   445,
-   134,  1100,   448,  1102,   455,   702,   457,    22,   459,   460,
-   856,   462,   975,    21,   977,    22,   467,    25,   341,   470,
-    18,    21,    22,    21,    32,    33,   477,   419,   174,   175,
-   470,   177,   178,   174,   175,    22,   177,   178,   489,   959,
-   854,   492,   855,   494,    18,   179,   497,    21,   174,   175,
-    29,   177,   178,   179,   174,   175,   176,   191,    39,   193,
-    25,    26,   445,    28,    24,   448,    26,   844,   845,   598,
-    40,   852,   853,    18,    34,   458,    21,   460,    43,   462,
-    25,   395,   396,   397,   846,   847,    54,   470,   222,   443,
-   473,    21,   621,    19,   477,    25,   450,    18,   438,    91,
-    21,   455,    23,   457,   174,   175,   556,   177,   178,    18,
-    22,   465,    21,   959,   918,   469,  1050,    18,    48,    49,
-    21,    24,   572,    26,  1031,    91,   577,    18,   451,   580,
-    21,    34,   686,    22,   517,   518,    85,    86,    18,    24,
-    21,    21,   593,   594,    25,   959,   959,    18,   901,   600,
-    21,   848,   849,   850,   851,   174,   175,    91,   177,   178,
-   600,   438,   419,   555,    21,    19,   115,   116,    25,   620,
-    18,    52,    53,    21,   625,    32,    33,    25,   959,    21,
-   129,   495,   959,    25,   635,   636,   122,    21,   419,   640,
-    20,    25,     8,     9,    10,    37,    38,   959,    91,   135,
-   136,   137,   138,   139,   140,    27,   142,   143,    50,    51,
-   963,   662,    21,    24,    48,    49,    25,   600,    21,   670,
-   574,   672,    25,    37,    38,   676,   677,  1033,   981,    24,
-   681,    26,    18,   986,   685,   686,    50,    51,    18,    21,
-    21,   692,   796,    25,    25,   599,   686,   776,  1001,    32,
-    33,   994,   692,   959,  1007,    37,    38,   963,     5,    24,
-   711,    26,   959,  1016,    24,   619,    26,    18,    50,    51,
-   624,   174,   175,    23,   177,   178,    24,    24,    25,    26,
-   986,  1087,   811,    22,   607,   419,    18,    34,   671,    96,
-   673,    98,  1045,  1046,    25,  1048,   650,    21,   555,   682,
-    25,    25,   685,   686,  1010,  1011,  1012,    24,    24,    26,
-    21,    28,    21,  1019,    25,   766,    25,    21,   134,    21,
-    18,    25,    18,    25,   555,  1078,    43,    29,    24,    46,
-    47,    52,    53,    29,    30,    31,    32,    33,    34,    48,
-    49,   118,    21,   120,   795,   796,    25,   798,    21,    45,
-    46,    47,    25,    18,   131,   132,   796,   134,    18,   136,
-   137,    18,  1068,   179,    18,  1071,  1119,    42,  1074,  1075,
-   724,   187,   149,    69,  1080,   191,    21,   193,    19,    21,
-    25,    37,    38,    25,    21,   201,   202,    21,    25,     9,
-   206,    25,   208,     8,    50,    51,    48,    49,   712,   713,
-   714,   715,   716,   717,   220,   221,   222,    25,  1114,    20,
-    21,  1117,    11,   796,   110,    21,    23,    20,    21,    25,
-    24,    11,    26,   806,    28,   361,    24,    21,    21,    21,
-   784,    25,    25,    25,   885,    24,    21,    21,    22,    43,
-    25,   892,    46,    47,    87,   768,   174,   175,   771,    56,
-    57,    58,    59,    60,    61,    62,    63,    64,    65,   395,
-   396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
-   406,   407,   408,   409,   410,    21,    19,    21,   174,   175,
-   176,    25,    21,    19,   180,    19,    25,   961,    19,    20,
-    34,    35,    36,    24,    19,    27,  1050,    24,    29,    30,
-    31,    32,    33,    34,  1033,    21,   442,    21,    21,    25,
-   984,    25,    25,    87,    45,    46,    47,   132,   969,   134,
-    25,   972,    21,   877,   878,    22,   972,   841,   842,   843,
-    21,   885,    21,    21,    25,    18,    25,   988,    69,   990,
-    24,    21,   988,   994,   927,   928,   997,   998,   988,    21,
-    25,  1001,    21,    25,   490,   909,    25,    21,  1087,   495,
-    22,    25,   378,   886,   179,   888,   889,   890,    11,    21,
-  1099,    21,   187,    25,    27,    25,   191,    21,   193,   110,
-  1031,    25,    24,  1034,    21,    24,   201,    25,    25,   972,
-    34,    35,    36,    21,    21,  1045,    21,    25,    25,  1050,
-    25,    24,    21,   419,    20,   988,    25,   222,   922,    21,
-   546,    21,   548,    25,   550,    25,   970,     8,     9,    10,
-    19,    23,   438,    77,    78,    79,    80,    81,    82,    83,
-  1081,    20,    19,  1084,     5,     8,     9,    10,  1084,    23,
-    66,    67,    68,   174,   175,   176,    27,    21,  1031,   180,
-    20,    20,   975,    25,   977,    34,    35,    36,    34,    35,
-    36,    24,   598,    71,    72,    73,    22,  1050,    71,    72,
-    73,    24,     8,     9,    10,    25,    18,    25,    27,    18,
-    25,  1035,    25,    27,    21,   621,  1069,  1070,    29,  1140,
-    25,   355,    24,    39,    54,  1146,    71,    72,    73,    25,
-    40,  1084,    77,    78,    79,    80,    81,    82,    83,   324,
-    87,    25,   648,    24,    18,   379,   331,   332,   333,   334,
-   384,   385,   386,   387,   388,   389,   390,   391,   392,   393,
-   394,    25,  1115,  1116,    25,    25,    25,   352,    21,   555,
-    18,    25,    18,   134,    21,    18,   178,    21,   363,    87,
-    22,   415,    20,    87,    20,    25,    87,    87,    25,    87,
-   189,   134,    71,    72,    73,   380,   702,  1121,    77,    78,
-    79,    80,    81,    82,    83,    87,   712,   713,   714,   715,
-   716,   717,   718,   719,    18,    20,    72,    20,   179,    27,
-    87,    27,    87,     0,     0,   321,   187,   760,   134,    81,
-   191,   985,   193,  1009,   419,  1060,   179,   874,   906,  1114,
-   201,   426,   986,  1080,   187,   206,   825,   208,   191,   580,
-   193,  1084,   462,   673,     8,     9,    10,   671,   201,   220,
-   221,   222,   796,   206,   685,   208,   111,    10,   342,   221,
-   776,  1054,   508,   179,   419,   959,   702,   220,   221,   222,
-    -1,   187,    -1,    -1,    23,   191,    -1,   193,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   201,    -1,    -1,    -1,    -1,
-   206,    -1,   208,    -1,    -1,   811,    -1,    -1,     8,     9,
-    10,    -1,    -1,    -1,   220,   221,   222,    56,    57,    58,
-    59,    60,    61,    62,    63,    64,    65,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   841,   842,   843,   844,   845,
-   846,   847,   848,   849,   850,   851,   852,   853,   854,   855,
-   856,   857,    -1,   859,     8,     9,    10,    -1,    -1,    -1,
-    -1,    -1,   547,    -1,    -1,    -1,   365,    -1,    -1,    -1,
-   555,    -1,    -1,    -1,   373,    -1,   375,    -1,    -1,    19,
-   134,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,
-    30,    31,    32,    33,    34,    -1,    -1,    -1,   632,    -1,
-    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   922,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   179,   425,    -1,    -1,    69,
-   615,    -1,    -1,   187,   134,    -1,    -1,   191,    -1,   193,
-    -1,   675,    -1,    -1,    -1,   444,    -1,   201,    -1,    -1,
-    -1,    -1,   206,   959,   208,   640,    -1,    -1,   419,    -1,
-    -1,   646,    -1,    -1,   649,    -1,   220,   221,   222,    -1,
-   110,    -1,    -1,    -1,    -1,    -1,   419,   438,    -1,   179,
-   134,   480,    -1,    -1,    -1,    -1,    -1,   187,    -1,    -1,
-    -1,   191,    -1,   193,    -1,   438,    -1,    -1,    -1,    -1,
-    -1,   201,    -1,    -1,    -1,    -1,   206,    -1,   208,   508,
-    -1,    -1,    -1,   419,    -1,    -1,   701,    -1,    -1,    -1,
-   220,   221,   222,    -1,    -1,   179,   711,  1033,    -1,    -1,
-    -1,    -1,   438,   187,   174,   175,   176,   191,    -1,   193,
-   180,    -1,    -1,    -1,    -1,   779,    -1,   201,   782,    -1,
-    -1,    -1,   206,    -1,   208,    -1,    -1,   556,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   220,   221,   222,    -1,
-    -1,    -1,    -1,   572,   573,    -1,    -1,    -1,    -1,    -1,
-    -1,  1087,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   824,   825,    -1,  1099,   555,    -1,   830,   831,   832,   833,
-   834,   835,   836,   837,   838,   839,   840,    -1,    -1,    -1,
-    -1,   610,   555,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   627,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   826,    -1,    -1,    -1,   644,   645,    -1,   882,   555,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   656,    -1,    -1,
-    -1,    -1,    -1,    -1,     1,   419,    -1,    -1,    -1,     6,
-     7,     8,    -1,    -1,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,   438,    -1,    -1,    24,    25,   688,
+   473,   341,     3,     2,     0,   278,     7,     8,     9,    10,
+   441,   117,     0,   343,   388,   595,     8,   380,   381,   630,
+   295,   378,   379,   529,   630,   389,   630,   630,   668,   599,
+    21,   227,   390,     8,    25,   297,   527,   137,   150,   151,
+   152,   153,   154,   155,   992,   426,    27,   634,   891,   780,
+   451,   386,   387,     0,   883,   653,   382,   383,   384,   385,
+     0,   789,   258,     3,   792,     5,   795,   538,    19,     5,
+     9,    10,   801,   216,   685,   634,     5,   634,   221,   685,
+   223,   685,   685,    84,   555,   425,     5,   910,    84,    25,
+     8,    28,   235,    18,   634,    24,    84,  1055,  1056,    24,
+    26,    18,    28,     9,    10,    34,    25,    44,   634,    34,
+   680,    24,    24,    21,    26,    18,   117,    25,    44,    24,
+    23,    34,    34,  1071,   630,   124,    24,   900,  1076,    22,
+   903,   471,   133,    26,   133,    28,    34,    84,    21,   630,
+     6,     7,    25,   144,    84,    53,    54,    28,   149,   992,
+   993,    44,    26,   982,   983,   795,    39,   149,    98,     5,
+    34,   801,  1120,    44,    32,    33,   167,   754,   896,   109,
+   110,   902,    86,   904,   149,     8,    24,  1125,    24,   685,
+   581,   779,   769,    18,   782,   914,    34,  1010,    34,   903,
+   452,    21,   193,   133,   685,   754,   187,   754,   671,   580,
+   201,   193,   203,   399,   205,   478,   187,   208,    18,   201,
+   769,    21,   769,   205,   754,   216,   208,     5,   193,    24,
+   221,  1064,   223,  1066,  1053,    41,   201,   557,   754,   769,
+   205,   149,     5,   208,   235,   236,   237,    25,   203,   579,
+    56,   341,    41,   769,  1017,   237,  1019,   183,   184,   185,
+    24,     5,   188,   189,   183,   184,   630,    56,   183,   184,
+    24,   601,   237,   375,   376,   377,   630,   630,    24,   880,
+   183,   184,   630,   630,   914,   193,   277,   216,   421,   280,
+   281,   282,   221,   201,   223,   183,   184,   205,   561,   277,
+   208,    24,    34,   294,  1022,   630,   235,   236,    18,   300,
+    26,   576,    28,  1017,   630,  1019,   294,    18,    21,   754,
+   216,   685,    24,   643,    27,   221,   149,   223,    44,   237,
+    19,   685,   685,   322,   769,   425,  1169,   685,   685,   235,
+   236,    16,   605,   179,   180,   183,   184,   183,   184,   812,
+    21,   187,   922,    26,   345,    28,    27,   620,   918,   622,
+   685,    16,   353,    21,   355,    87,    88,    25,   969,   685,
+   193,    44,    16,   969,   476,   969,   969,   109,   110,   875,
+    21,   471,   205,     5,    25,   208,    18,    16,    29,    21,
+   345,   321,   873,    25,    18,   117,   118,    21,   353,    15,
+   355,    25,    24,    25,    26,   183,   184,   185,   399,   131,
+   188,   189,    34,    18,   237,    21,    21,   399,    23,    25,
+   183,   184,   185,    21,    21,   188,   189,    25,    25,    22,
+   421,   417,   695,    21,   399,    22,   427,    25,   429,   183,
+   184,   185,   428,    24,   188,   189,    27,    22,   439,  1050,
+   441,   429,   443,    34,    24,   785,    18,    27,    25,    21,
+   451,    28,   451,   454,    34,    25,    26,   458,    28,    34,
+    35,    36,   427,   969,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    44,    24,    21,    26,   969,   579,
+    25,   399,   421,    21,   183,   184,   185,    25,   489,   188,
+   189,    24,   432,    26,    32,    33,   870,   498,   499,   862,
+   863,   601,    29,   860,   861,   107,  1117,   871,    21,   111,
+    39,   113,    25,   115,   872,   421,     0,    40,   120,     3,
+   183,   184,   185,     7,   489,   188,   189,    21,   130,    18,
+   132,    25,    21,   868,   869,    55,   537,   538,   864,   865,
+   866,   867,   538,    21,   545,   537,    93,    25,    22,    93,
+     5,   552,    21,    19,   555,   556,    25,   545,   187,   555,
+    34,    24,   537,    26,    24,   671,   399,    34,    22,    24,
+    25,    26,   174,   538,    34,    25,    26,    21,    28,    34,
+   581,    25,   581,    22,   696,   697,   698,   699,   700,   701,
+   555,   556,   183,   184,    44,   969,   187,    21,   928,    18,
+    84,    25,    21,   183,   184,   969,   969,   187,   883,    21,
+    24,   969,   969,    25,    24,    22,    26,    21,    21,   537,
+    93,    25,    25,  1096,    34,   626,   627,    18,    20,   630,
+    21,    25,    26,   117,   969,    21,    19,   638,   639,    25,
+   641,   916,    93,   969,    18,    49,    50,    21,   588,   133,
+    21,  1082,    27,     0,    25,   656,     3,   658,    24,   261,
+   144,   626,   627,    18,    11,    12,   667,    23,    26,   670,
+   671,   672,   671,    24,   639,    26,    34,   676,    49,    50,
+    25,    26,    18,    28,   685,   785,   288,    49,    50,   291,
+    21,    24,    34,    26,    25,    20,    21,   299,    21,    44,
+   302,    34,    25,   978,    21,    18,   812,   672,    25,   183,
+   184,   185,   987,    24,   188,   189,   183,   184,   185,   179,
+   180,   188,   189,   183,   184,    22,   826,   187,   183,   184,
+   185,    21,  1007,   188,   189,    25,    21,    84,    21,    21,
+    25,    18,    25,    25,    86,   857,   858,   859,  1023,    34,
+    35,    36,    99,   100,   101,   102,   103,   104,   105,   106,
+  1033,   108,    53,    54,   111,    21,    49,    50,    25,    25,
+   117,   772,    21,   183,   184,   185,    25,    25,   188,   189,
+   127,   128,   129,    21,  1059,    24,   133,    25,    21,   183,
+   184,   185,    25,   277,   188,   189,   280,   281,   282,     9,
+    49,    50,   149,  1078,  1144,    67,    68,    69,    21,   156,
+   294,   812,    25,   812,   416,    18,   300,    18,    37,    38,
+   932,   822,    42,    43,   426,   183,   184,   185,    18,   431,
+   188,   189,    51,    52,   436,    21,   438,   777,  1178,    25,
+   780,   183,   184,    18,   446,    21,   188,   189,   450,    25,
+   183,   184,   185,    18,    21,   188,   189,   190,    25,    21,
+    22,    37,    38,   335,    21,    19,    37,    38,    25,   216,
+    37,    38,    32,    33,    23,    51,    52,    34,    35,    36,
+    51,    52,   883,    18,    51,    52,    21,   359,    18,    11,
+   891,    21,   364,   365,   366,   367,   368,   369,   370,   371,
+   372,   373,   374,    18,    49,    50,    21,   254,    57,    58,
+    59,    60,    61,    62,    63,    64,    65,    66,    24,    24,
+    26,    21,    28,   395,    25,    25,    53,    54,    21,    11,
+   277,   278,    25,   280,   281,    21,   937,   938,    44,    32,
+    33,    47,    48,    89,    21,   429,    21,   294,    25,    19,
+    25,    20,    21,   300,    21,   439,   303,   441,    25,   443,
+   900,    21,   902,   903,   904,    25,    19,   451,   969,    21,
+   454,    19,    21,    25,   458,   322,    25,    19,   580,   980,
+    89,   982,   983,    24,   980,    26,    24,    28,    27,   990,
+  1096,   992,   993,    25,    21,    21,   343,   599,    25,    25,
+    21,    21,   604,    44,    25,    22,    47,    48,  1009,    72,
+    73,    74,    75,  1014,   498,   499,    79,    80,    81,    82,
+    83,    84,    85,    20,    21,  1026,  1014,  1026,  1029,   631,
+    24,   633,    34,    35,    36,    51,    52,    53,  1026,    21,
+    22,    32,    33,    21,  1144,   109,   110,    18,    21,  1050,
+  1051,  1052,  1053,    22,  1055,  1056,    11,  1157,    25,    24,
+    24,   545,    24,  1064,    27,  1066,  1067,    25,    24,   416,
+  1071,    23,  1073,  1074,    20,  1076,    19,  1017,  1178,  1019,
+    20,  1082,   429,    19,    23,     5,    21,    25,    22,   436,
+    27,   438,    24,   440,   441,  1096,   443,   581,     8,     9,
+    10,   448,    24,    20,   451,   707,    25,    20,    24,    27,
+    25,   458,    72,    18,    25,    27,  1117,  1118,  1119,  1120,
+    21,    25,    25,   470,  1125,    25,   473,    29,   475,    24,
+    25,   478,    39,    25,    29,    30,    31,    32,    33,    34,
+   612,    40,    89,    18,  1145,    89,    55,   184,    89,   137,
+    24,    46,    47,    48,    25,    25,    89,  1145,    89,    89,
+   762,   763,   150,   151,   152,   153,   154,   155,  1169,   157,
+   158,    25,   656,    25,   658,    70,    18,    25,    21,    18,
+   187,    40,    18,   667,    21,    23,   670,   671,   660,   182,
+    18,    24,   794,    18,   189,    89,    24,    21,   545,    22,
+    22,    29,    30,    31,    32,    33,    34,    22,    21,    23,
+    20,   558,    20,    89,   561,    27,    25,   112,    46,    47,
+    48,    25,    40,     8,    27,   191,    25,   574,   575,    18,
+    20,    27,    20,    25,   581,     0,     0,    84,   300,   149,
+  1067,   891,    70,    57,    58,    59,    60,    61,    62,    63,
+    64,    65,    66,   600,  1169,   972,  1138,   659,   605,  1041,
+   981,  1117,  1009,   841,   443,   767,   561,  1145,   615,   616,
+   658,   656,   812,   620,   124,   622,   322,   670,     8,     9,
+    10,    10,   236,   193,   112,   489,  1101,   399,   183,   184,
+   185,   201,   187,   969,    -1,   205,   685,   899,   208,    -1,
+   647,    -1,    -1,    -1,    -1,    -1,   216,   217,   655,    -1,
+   657,   221,    -1,   223,   661,   662,   918,   789,    -1,   666,
+   792,    -1,    -1,   670,   671,   235,   236,   237,   812,   676,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   822,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   695,    -1,
+    -1,    -1,    -1,   341,    -1,   183,   184,   185,    -1,   187,
+    -1,    -1,   147,    -1,   149,    -1,    -1,    -1,   840,   841,
+    -1,    -1,    -1,    -1,   846,   847,   848,   849,   850,   851,
+   852,   853,   854,   855,   856,    -1,    -1,   375,   376,   377,
+   378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
+   388,   389,   390,    -1,    -1,    -1,    -1,    -1,   193,    -1,
+  1012,    -1,    -1,    -1,    -1,    -1,   201,    -1,    -1,   149,
+   205,    -1,    -1,   208,   896,    -1,    -1,    -1,   775,    -1,
+    -1,   216,    -1,    -1,    -1,    -1,    -1,   425,    -1,    -1,
+    -1,    -1,    -1,     8,     9,    10,    -1,    -1,   358,    -1,
+    -1,    -1,   237,   937,   938,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   193,   811,   812,    -1,   814,    -1,    -1,
+    -1,   201,    -1,    -1,    -1,   205,    -1,    -1,   208,    -1,
+    -1,    -1,    -1,   471,  1086,    -1,   216,    -1,   476,   399,
+    -1,   221,    -1,   223,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   235,   236,   237,    -1,    -1,
+    -1,   421,    -1,    -1,    -1,    -1,    -1,    -1,   303,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   311,   312,   313,   314,
+  1014,    -1,     8,     9,    10,    -1,    -1,    -1,    -1,   527,
+    -1,   529,  1026,   531,   532,  1029,    -1,   332,    -1,    -1,
+  1022,    -1,   899,    -1,    -1,    -1,    -1,    -1,   343,   906,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1051,  1052,    -1,
+    -1,    -1,    -1,    -1,  1176,   360,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   149,    -1,    -1,    -1,    -1,  1073,
+  1074,   579,    -1,    -1,    -1,    -1,    -1,    -1,  1082,    -1,
+    -1,    -1,    -1,     8,     9,    10,    -1,    -1,    -1,    -1,
+    -1,    -1,  1096,   601,   399,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   407,    -1,    -1,    -1,    -1,   537,   193,    -1,
+    -1,    -1,    -1,    -1,  1118,  1119,   201,    -1,    -1,    -1,
+   205,    -1,   630,   208,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   216,    -1,    -1,    -1,    -1,   221,    -1,   223,    -1,
+    -1,  1145,    -1,    -1,  1011,    -1,    -1,  1014,    -1,   399,
+   235,   236,   237,   149,    -1,    -1,    -1,    -1,    -1,  1026,
+    -1,  1028,    -1,    -1,    -1,    -1,  1033,    -1,    -1,  1036,
+  1037,   421,    -1,    -1,    -1,    -1,    -1,   685,    -1,    -1,
+    -1,     8,     9,    10,    -1,    -1,    -1,    -1,   696,   697,
+   698,   699,   700,   701,   702,   703,    -1,   193,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   201,    -1,    -1,    -1,   205,
+  1077,    -1,   208,    -1,    -1,  1082,    -1,  1084,  1085,    -1,
+   216,    -1,    -1,   528,   149,   221,    -1,   223,    -1,  1096,
+    -1,    -1,   537,    -1,    -1,     8,     9,    10,    -1,   235,
+   236,   237,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,  1121,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,
+    -1,    -1,    -1,    -1,  1141,  1142,   201,   785,  1145,    -1,
+   205,  1148,    -1,   208,    -1,    -1,    -1,   537,    -1,    -1,
+   595,   216,    19,    20,    -1,    -1,   221,    24,   223,    -1,
     -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
-   699,    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,    46,
-    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   419,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   913,    -1,
-    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,   438,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   980,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    96,
-    97,    -1,    -1,    -1,    -1,   419,    -1,    -1,    -1,   106,
-    -1,    -1,   957,   110,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   438,    -1,    -1,    -1,    -1,    -1,
-    -1,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   555,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    44,    -1,   174,   175,   176,
-   177,   178,    -1,   180,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   555,    -1,    66,    67,    68,
-    -1,    70,    -1,    -1,    -1,    74,    75,    76,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,
-    89,    90,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,
-   109,   555,   111,   112,   113,   114,   115,   116,   117,   118,
-   119,   120,    -1,   122,   123,   124,   125,   126,   127,   128,
-   129,   130,   131,   132,   133,   134,   135,   136,    -1,   138,
-   139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-   149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,   177,   178,
-   179,   180,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    24,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
-    68,    -1,    70,    -1,    -1,    -1,    74,    75,    76,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    88,    89,    90,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
-   108,   109,    -1,   111,   112,   113,   114,   115,   116,   117,
-   118,   119,   120,    -1,   122,   123,   124,   125,   126,   127,
-   128,   129,   130,   131,   132,   133,   134,   135,   136,    -1,
-   138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-   148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,     1,   177,
-   178,   179,   180,     6,     7,     8,    -1,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    -1,    -1,
-    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
-    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    66,    67,    68,    69,    70,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-    93,    94,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   106,   107,   108,   109,   110,   111,   112,
-   113,   114,   115,   116,   117,   118,   119,   120,    -1,   122,
-   123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-   133,   134,   135,   136,    -1,   138,   139,   140,   141,   142,
-   143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,   176,   177,   178,   179,   180,     1,    -1,
-    -1,    -1,    -1,     6,     7,     8,    -1,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    -1,    -1,    -1,
-    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
-    -1,    -1,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    66,    67,    68,    69,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-    93,    94,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   106,   107,   108,   109,   110,   111,   112,
-   113,   114,   115,   116,   117,   118,   119,   120,    -1,   122,
-   123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-   133,   134,   135,   136,    -1,   138,   139,   140,   141,   142,
-   143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,   176,   177,   178,   179,   180,     1,    -1,
-    -1,    -1,    -1,     6,     7,     8,    -1,    -1,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    -1,    -1,
-    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
-    -1,    -1,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    66,    67,    68,    69,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-    93,    94,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   106,   107,   108,   109,   110,   111,   112,
-   113,   114,   115,   116,   117,   118,   119,   120,    -1,   122,
-   123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-   133,   134,   135,   136,    -1,   138,   139,   140,   141,   142,
+   235,   236,   237,    -1,   399,   620,    -1,   622,   826,    46,
+    47,    48,   149,   628,    -1,    -1,    -1,   632,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   421,    -1,    -1,    -1,
+    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,   857,
+   858,   859,   860,   861,   862,   863,   864,   865,   866,   867,
+   868,   869,   870,   871,   872,   873,   193,   875,    -1,    -1,
+    -1,    -1,    -1,    -1,   201,    -1,   149,    -1,   205,   684,
+    -1,   208,    -1,    -1,    -1,   112,    18,    -1,    -1,   216,
+   695,    -1,    24,    -1,   221,    -1,   223,    29,    30,    31,
+    32,    33,    34,   399,    -1,    -1,    -1,    -1,   235,   236,
+   237,    -1,    -1,    -1,    46,    47,    48,    -1,    -1,    -1,
+   193,    -1,    -1,    -1,   932,   421,    -1,    -1,   201,    -1,
+    -1,    -1,   205,    -1,    -1,   208,    -1,    -1,    70,    -1,
+    -1,    -1,    -1,   216,    -1,    -1,    -1,    -1,   221,    -1,
+   223,    -1,   537,    -1,    -1,    -1,   183,   184,   185,    -1,
+   187,   969,   235,   236,   237,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   399,    -1,    19,    -1,    -1,    -1,
+   112,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
+    33,    34,    -1,    -1,    -1,    -1,   421,    -1,    -1,    -1,
+    -1,    -1,     1,    46,    47,    48,    -1,     6,     7,     8,
+    -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    -1,    -1,    -1,    24,    -1,    70,    -1,    -1,
+    29,    30,    31,    32,    33,    34,    -1,   842,    -1,    -1,
+    -1,   537,    -1,    42,    43,    -1,    -1,    46,    47,    48,
+    -1,   183,   184,   185,    -1,   187,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,
+    -1,    70,   399,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,     1,    -1,
+    -1,    -1,    -1,    -1,   421,    94,    95,    96,    97,    98,
+    99,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,
+    -1,    24,   537,   112,    -1,    -1,    -1,   922,    -1,    -1,
+    -1,    34,    -1,    -1,    -1,    -1,   399,    -1,    -1,    -1,
+    -1,    -1,    45,    -1,    -1,    -1,  1144,    -1,    -1,    -1,
+   183,   184,   185,    -1,   187,    -1,    -1,    -1,   421,  1157,
+    -1,    -1,    -1,    -1,    67,    68,    69,    -1,    71,    -1,
+    -1,    -1,   967,    76,    77,    78,    -1,    -1,    -1,    -1,
+  1178,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    92,
+    -1,    -1,    -1,    -1,   183,   184,   185,    -1,   187,   188,
+   189,    -1,    -1,    -1,    -1,    -1,   109,   110,   111,    -1,
+   113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+   537,   124,   125,   126,   127,   128,   129,   130,   131,   132,
+   133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
    143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
    153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
    163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,   176,   177,   178,   179,   180,     1,    -1,
-    -1,    -1,    -1,     6,     7,     8,    -1,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    -1,    -1,    -1,
-    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
-     1,    -1,    45,    46,    47,     6,     7,     8,    -1,    10,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    -1,
-    -1,    -1,    -1,    24,    -1,    -1,    69,    -1,    29,    30,
-    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    42,    -1,    -1,    45,    46,    47,    -1,    91,    92,
-    93,    94,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   106,    -1,    -1,    -1,   110,    69,    -1,
+   173,   174,   175,   176,   537,     0,     1,    -1,    -1,    -1,
+   183,   184,   185,   186,    -1,   188,   189,   190,    -1,    -1,
+    -1,    -1,    -1,   119,   120,   121,   122,    -1,   124,    24,
+    -1,    -1,    -1,   129,   130,    -1,    -1,   133,   134,    34,
+   136,   137,   138,   139,    -1,    -1,    -1,    -1,    -1,    -1,
+    45,    -1,    -1,    -1,    -1,   151,   152,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    67,    68,    69,    -1,    71,    -1,    -1,    -1,
+   176,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,
+   186,    -1,    -1,    -1,    -1,    90,    91,    92,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    91,    92,    93,    94,    95,    96,    97,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   106,    -1,    -1,    -1,   110,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   174,   175,   176,   177,   178,    -1,   180,    -1,     1,
-    -1,    -1,    -1,    -1,     6,     7,     8,    -1,    -1,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    -1,
-    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,
-    32,    33,    34,   174,   175,   176,   177,   178,    -1,   180,
-    42,     1,    -1,    45,    46,    47,     6,     7,     8,    -1,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    -1,    -1,    -1,    24,    -1,    -1,    69,    -1,    29,
-    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    42,    -1,    -1,    45,    46,    47,    -1,    91,
-    92,    93,    94,    95,    96,    97,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   106,    -1,    -1,    -1,   110,    69,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   109,   110,   111,    -1,   113,   114,
+   115,   116,   117,   118,   119,   120,   121,   122,    -1,   124,
+   125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+   135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+   145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+   165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+   175,   176,    -1,    -1,    -1,    -1,    -1,    -1,   183,   184,
+   185,   186,     1,   188,   189,   190,    -1,     6,     7,     8,
+    -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
+    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    42,    43,    -1,    45,    46,    47,    48,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    92,    93,    94,    95,    96,    97,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   106,    -1,    -1,    -1,
-   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
+    69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   174,   175,   176,   177,   178,    -1,   180,    -1,
-     1,    -1,    -1,    -1,    -1,     6,     7,     8,    -1,    -1,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,
-    31,    32,    33,    34,   174,   175,   176,   177,   178,    -1,
-   180,    42,     1,    -1,    45,    46,    47,     6,     7,     8,
+    -1,    -1,    -1,    -1,    -1,    94,    95,    96,    97,    98,
+    99,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,
+   109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+   119,   120,   121,   122,    -1,   124,   125,   126,   127,   128,
+   129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+   139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+   149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+   169,   170,   171,   172,   173,   174,   175,   176,    -1,    -1,
+    -1,    -1,    -1,    -1,   183,   184,   185,   186,   187,   188,
+   189,   190,     1,    -1,    -1,    -1,    -1,     6,     7,     8,
     -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    -1,    -1,    -1,    -1,    24,    -1,    -1,    69,    -1,
+    19,    -1,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
     29,    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    42,    -1,    -1,    45,    46,    47,    -1,
-    -1,    92,    93,    94,    95,    96,    97,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   106,    -1,    -1,    -1,   110,
-    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    42,    43,    -1,    -1,    46,    47,    48,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    92,    93,    94,    95,    96,    97,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,    -1,    -1,
-    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
+    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   174,   175,   176,   177,   178,    -1,   180,
-    -1,    -1,    -1,    -1,     6,     7,     8,    -1,    10,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    -1,
-    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,
-    32,    33,    34,    -1,    -1,   174,   175,   176,   177,   178,
-    42,   180,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    94,    95,    96,    97,    98,
+    99,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,
+   109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+   119,   120,   121,   122,    -1,   124,   125,   126,   127,   128,
+   129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+   139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+   149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+   169,   170,   171,   172,   173,   174,   175,   176,    -1,    -1,
+    -1,    -1,    -1,    -1,   183,   184,   185,   186,   187,   188,
+   189,   190,     1,    -1,    -1,    -1,    -1,     6,     7,     8,
+    -1,    -1,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
+    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    42,    43,    -1,    -1,    46,    47,    48,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
+    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    94,    95,    96,    97,    98,
+    99,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,
+   109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+   119,   120,   121,   122,    -1,   124,   125,   126,   127,   128,
+   129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+   139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+   149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+   169,   170,   171,   172,   173,   174,   175,   176,    -1,    -1,
+    -1,    -1,    -1,    -1,   183,   184,   185,   186,   187,   188,
+   189,   190,     1,    -1,    -1,    -1,    -1,     6,     7,     8,
+    -1,    -1,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    -1,    -1,    -1,    24,    25,    -1,    -1,    -1,
+    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    42,    43,     1,    -1,    46,    47,    48,
+     6,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    -1,    -1,    -1,    -1,    24,    -1,
+    -1,    70,    -1,    29,    30,    31,    32,    33,    34,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,
+    46,    47,    48,    -1,    93,    94,    95,    96,    97,    98,
+    99,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,
+    -1,    -1,    -1,   112,    70,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    92,    93,    94,    95,    96,    97,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   106,   107,   108,   109,   110,   111,
-   112,   113,   114,   115,   116,   117,   118,   119,   120,    -1,
-   122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-   132,   133,   134,   135,   136,    -1,   138,   139,   140,   141,
-   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,   176,   177,   178,   179,   180,     6,
-     7,     8,    -1,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,    -1,
-    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    42,    -1,    44,    45,    46,
-    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
+    96,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   108,    -1,    -1,    -1,   112,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-    97,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
-   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   119,   120,    -1,   122,   123,   124,   125,   126,
-   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-    -1,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-   147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-   177,   178,   179,   180,     6,     7,     8,    -1,    10,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    -1,
-    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,
-    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    42,    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   183,   184,   185,    -1,   187,   188,
+   189,    -1,    -1,     1,    -1,    -1,    -1,    -1,     6,     7,
+     8,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
+    18,    19,    -1,    -1,    -1,    -1,    24,    -1,    -1,    -1,
+    -1,    29,    30,    31,    32,    33,    34,   183,   184,   185,
+    -1,   187,   188,   189,    42,    43,     1,    -1,    46,    47,
+    48,     6,     7,     8,    -1,    -1,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,
+    -1,    -1,    70,    -1,    29,    30,    31,    32,    33,    34,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,
+    -1,    46,    47,    48,    -1,    93,    94,    95,    96,    97,
+    98,    99,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   108,    -1,    -1,    -1,   112,    70,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
+    95,    96,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   108,    -1,    -1,    -1,   112,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    92,    93,    94,    95,    96,    97,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   106,   107,   108,   109,   110,   111,
-   112,   113,   114,   115,   116,   117,   118,   119,   120,    -1,
-   122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-   132,   133,   134,   135,   136,    -1,   138,   139,   140,   141,
-   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,   176,   177,   178,   179,   180,     6,
-     7,     8,    -1,    10,    11,    12,    13,    14,    15,    16,
+    -1,    -1,    -1,    -1,    -1,   183,   184,   185,    -1,   187,
+   188,   189,    -1,    -1,     1,    -1,    -1,    -1,    -1,     6,
+     7,     8,    -1,    -1,    11,    12,    13,    14,    15,    16,
     17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,    -1,
-    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    46,
-    47,     6,     7,     8,    -1,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,
-    -1,    -1,    69,    -1,    29,    30,    31,    32,    33,    34,
+    -1,    -1,    29,    30,    31,    32,    33,    34,   183,   184,
+   185,    -1,   187,   188,   189,    42,    43,     1,    -1,    46,
+    47,    48,     6,     7,     8,    -1,    10,    11,    12,    13,
+    14,    15,    16,    17,    18,    19,    -1,    -1,    -1,    -1,
+    24,    -1,    -1,    70,    -1,    29,    30,    31,    32,    33,
+    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,
+    -1,    -1,    46,    47,    48,    -1,    -1,    94,    95,    96,
+    97,    98,    99,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   108,    -1,    -1,    -1,   112,    70,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    45,    46,    47,    -1,    -1,    92,    93,    94,    95,    96,
-    97,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
-    -1,    -1,    -1,   110,    69,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
-    95,    96,    97,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   106,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,
+    94,    95,    96,    97,    98,    99,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   108,    -1,    -1,    -1,   112,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   174,   175,   176,
-   177,   178,    -1,   180,    -1,    -1,    -1,     6,     7,     8,
-    -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
-    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,   174,
-   175,   176,   177,   178,    -1,   180,    45,    46,    47,     6,
-     7,     8,    -1,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,    -1,
-    69,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    46,
-    47,    -1,    -1,    92,    93,    94,    95,    96,    97,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,    -1,    -1,
-    -1,   110,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-    97,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
-    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   183,   184,   185,    -1,
+   187,   188,   189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     6,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,
+    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,   183,
+   184,   185,    -1,   187,   188,   189,    42,    43,    -1,    45,
+    46,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    70,    71,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   174,   175,   176,   177,   178,
-    -1,   180,    -1,    -1,    -1,     6,     7,     8,    -1,    10,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    95,
+    96,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   108,   109,   110,   111,   112,   113,   114,   115,
+   116,   117,   118,   119,   120,   121,   122,    -1,   124,   125,
+   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+   136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+   176,    -1,    -1,    -1,    -1,    -1,    -1,   183,   184,   185,
+   186,   187,   188,   189,   190,     6,     7,     8,    -1,    10,
     11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,
-    31,    32,    33,    34,    -1,    -1,    -1,   174,   175,   176,
-   177,   178,    -1,   180,    45,    46,    47,     6,     7,     8,
-    -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    69,    -1,
-    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    -1,
-    -1,    92,    93,    94,    95,    96,    97,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   106,    -1,    -1,    -1,   110,
-    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    92,    93,    94,    95,    96,    97,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,    -1,    -1,
-    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   174,   175,   176,   177,   178,    -1,   180,
-    -1,    -1,    -1,     6,     7,     8,    -1,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    -1,    -1,
-    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,    -1,    -1,    -1,   174,   175,   176,   177,   178,
-    -1,   180,    45,    46,    47,     6,     7,     8,    -1,    10,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    -1,
-    -1,    -1,    -1,    24,    -1,    -1,    69,    -1,    29,    30,
     31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    45,    46,    47,    -1,    -1,    92,
-    93,    94,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   106,    -1,    -1,    -1,   110,    69,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    92,    93,    94,    95,    96,    97,    18,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   106,    -1,    -1,    -1,   110,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   174,   175,   176,   177,   178,    -1,   180,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    66,    67,    68,    -1,    70,
+    -1,    42,    43,    -1,    45,    46,    47,    48,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
+    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   174,   175,   176,   177,   178,    -1,   180,
-    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,   109,    -1,
+    -1,    -1,    -1,    94,    95,    96,    97,    98,    99,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,   109,   110,
    111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-    -1,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-   131,   132,   133,   134,   135,   136,    -1,   138,   139,   140,
+   121,   122,    -1,   124,   125,   126,   127,   128,   129,   130,
+   131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
    141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
    151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
    161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,   173,    18,    -1,    -1,    -1,    -1,   179,   180,
+   171,   172,   173,   174,   175,   176,    -1,    -1,    -1,    -1,
+    -1,    -1,   183,   184,   185,   186,   187,   188,   189,   190,
+     6,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,
+    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    45,
+    46,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
+    -1,    -1,    -1,    -1,    70,    71,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    95,
+    96,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   108,   109,   110,   111,   112,   113,   114,   115,
+   116,   117,   118,   119,   120,   121,   122,    -1,   124,   125,
+   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+   136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+   176,    -1,    -1,    -1,    -1,    -1,    -1,   183,   184,   185,
+   186,   187,   188,   189,   190,     6,     7,     8,    -1,    10,
+    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,
+    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    46,    47,    48,     6,     7,
+     8,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
+    18,    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    70,
+    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
+    48,    -1,    -1,    94,    95,    96,    97,    98,    99,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,    -1,
+    -1,   112,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    94,    95,    96,    97,
+    98,    99,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   108,     6,     7,     8,   112,    10,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,
+    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
+    -1,    -1,   183,   184,   185,    -1,   187,   188,   189,    -1,
+    -1,    46,    47,    48,     6,     7,     8,    -1,    10,    11,
+    12,    13,    14,    15,    16,    17,    18,    19,    20,    -1,
+    -1,    -1,    24,    -1,    -1,    70,    -1,    29,    30,    31,
+    32,    33,    34,    -1,    -1,   183,   184,   185,    -1,   187,
+   188,   189,    -1,    -1,    46,    47,    48,    -1,    -1,    94,
+    95,    96,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   108,    -1,    -1,    -1,   112,    70,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   107,   108,   109,    -1,   111,   112,   113,   114,
-   115,   116,   117,   118,   119,   120,    -1,   122,   123,   124,
-   125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-   135,   136,    -1,   138,   139,   140,   141,   142,   143,   144,
-   145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,   173,    -1,
-    -1,    19,    -1,    -1,   179,   180,    24,    -1,    -1,    -1,
+    -1,    -1,    94,    95,    96,    97,    98,    99,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   108,     6,     7,     8,
+   112,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
+    29,    30,    31,    32,    33,    34,    -1,    -1,   183,   184,
+   185,    -1,   187,   188,   189,    -1,    -1,    46,    47,    48,
+     6,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,
+    -1,    70,    -1,    29,    30,    31,    32,    33,    34,    -1,
+    -1,   183,   184,   185,    -1,   187,   188,   189,    -1,    -1,
+    46,    47,    48,    -1,    -1,    94,    95,    96,    97,    98,
+    99,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,
+    -1,    -1,    -1,   112,    70,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    19,    -1,
-    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,
-    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    70,    -1,    45,    46,    47,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
-   108,   109,    -1,   111,   112,   113,   114,   115,   116,   117,
-   118,   119,   120,    -1,   122,   123,   124,   125,   126,   127,
-   128,   129,   130,   131,   132,   133,   134,   135,   136,   110,
-   138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-   148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,   173,    19,    -1,    -1,    -1,
-    -1,   179,   180,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    44,    -1,   174,   175,   176,    -1,    -1,    -1,   180,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    95,
+    96,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   108,     6,     7,     8,   112,    10,    11,    12,
+    13,    14,    15,    16,    17,    18,    19,    20,    -1,    -1,
+    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
+    33,    34,    -1,    -1,   183,   184,   185,    -1,   187,   188,
+   189,    -1,    -1,    46,    47,    48,     6,     7,     8,    -1,
+    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+    -1,    -1,    -1,    -1,    24,    -1,    -1,    70,    -1,    29,
+    30,    31,    32,    33,    34,    -1,    -1,   183,   184,   185,
+    -1,   187,   188,   189,    -1,    -1,    46,    47,    48,    -1,
+    -1,    94,    95,    96,    97,    98,    99,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   108,    -1,    -1,    -1,   112,
+    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,
+    -1,    -1,    -1,    -1,    94,    95,    96,    97,    98,    99,
+    19,    -1,    -1,    -1,    -1,    24,    -1,    -1,   108,    -1,
+    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   183,   184,   185,    -1,   187,   188,   189,    -1,    -1,    -1,
+    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   107,   108,   109,    -1,   111,   112,
-   113,   114,   115,   116,   117,   118,   119,   120,    -1,   122,
-   123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-   133,   134,   135,   136,    -1,   138,   139,   140,   141,   142,
-   143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,    24,    -1,    -1,    -1,    -1,   179,   180,   107,   108,
-   109,    34,   111,   112,   113,   114,   115,   116,   117,   118,
-   119,   120,    -1,   122,   123,   124,   125,   126,   127,   128,
-   129,   130,   131,   132,   133,   134,   135,   136,    -1,   138,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,
+    -1,    -1,    -1,   183,   184,   185,    -1,   187,   188,   189,
+   109,   110,   111,    -1,   113,   114,   115,   116,   117,   118,
+   119,   120,   121,   122,    -1,   124,   125,   126,   127,   128,
+   129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
    139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
    149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
    159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,   173,    -1,    -1,    -1,    -1,    -1,
-   179,   180,    -1,    -1,   107,   108,   109,    -1,   111,   112,
-   113,   114,   115,   116,   117,   118,   119,   120,    -1,   122,
-   123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-   133,   134,   135,   136,    -1,   138,   139,   140,   141,   142,
-   143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    24,   177,   178,   179,   180,    29,    30,
-    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    42,    24,    25,    45,    46,    47,    29,    30,    31,
-    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    45,    46,    47,    -1,    24,    69,    -1,
-    27,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    45,    46,
-    47,    -1,    24,    -1,    -1,    27,    -1,    29,    30,    31,
-    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,   110,
-    -1,    -1,    69,    45,    46,    47,    -1,    24,    25,    -1,
-    -1,    -1,    29,    30,    31,    32,    33,    34,   110,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    24,    69,    45,    46,
-    47,    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,
-    -1,    -1,    -1,   110,    -1,    -1,    -1,    45,    46,    47,
-    -1,    24,    69,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,    -1,   174,   175,   176,    -1,    -1,   110,   180,
-    -1,    69,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   174,   175,   176,    -1,    -1,    -1,   180,    -1,
-    -1,    -1,    -1,   110,    24,    -1,    69,    -1,    -1,    29,
-    30,    31,    32,    33,    34,    -1,    -1,   174,   175,   176,
-    -1,    -1,   110,   180,    -1,    45,    46,    47,    -1,    24,
-    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
-    -1,    -1,   174,   175,   176,    -1,    -1,   110,   180,    69,
-    45,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   174,   175,   176,
-    -1,    -1,    -1,   180,    69,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   174,   175,   176,    -1,
-   110,    -1,   180,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   174,   175,   176,    -1,   110,    -1,   180,    -1,    -1,
-    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   174,   175,   176,    -1,    -1,    -1,
-   180,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   174,
-   175,   176,    -1,    -1,    -1,   180,   107,   108,   109,    -1,
-   111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-    -1,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-   131,   132,   133,   134,   135,   136,    -1,   138,   139,   140,
+   169,   170,   171,   172,   173,   174,   175,   176,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   185,   186,   109,   110,
+   111,   190,   113,   114,   115,   116,   117,   118,   119,   120,
+   121,   122,    -1,   124,   125,   126,   127,   128,   129,   130,
+   131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
    141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
    151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
    161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,   173,    44,    -1,    -1,    -1,    -1,   179,   180,
+   171,   172,   173,   174,   175,   176,    22,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,   190,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    66,    67,    68,    -1,    70,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,   109,    -1,
-   111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-    -1,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-   131,   132,   133,   134,   135,   136,    -1,   138,   139,   140,
-   141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-   151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,   173,    44,    -1,    -1,    -1,    -1,   179,   180,
+    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
+    -1,    -1,    -1,   109,   110,   111,    -1,   113,   114,   115,
+   116,   117,   118,   119,   120,   121,   122,    -1,   124,   125,
+   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+   136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+   176,    -1,    -1,    -1,    -1,    -1,    19,    -1,    -1,    -1,
+   186,    24,    -1,    -1,   190,    -1,    29,    30,    31,    32,
+    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    46,    47,    48,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,   109,    -1,
-   111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-    -1,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-   131,   132,   133,   134,   135,   136,    -1,   138,   139,   140,
-   141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-   151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,   173,    66,    67,    68,    -1,    -1,   179,   180,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,
+    34,    24,    -1,    -1,    27,    -1,    29,    30,    31,    32,
+    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    46,    47,    48,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   107,   108,   109,    -1,   111,   112,
-   113,   114,   115,   116,   117,   118,   119,   120,    -1,   122,
-   123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-   133,   134,   135,   136,    -1,   138,   139,   140,   141,   142,
-   143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,    66,    67,    68,    -1,    -1,   179,   180,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   183,   184,   185,    -1,   187,   109,   110,   111,    -1,   113,
+   114,   115,   116,   117,   118,   119,   120,   121,   122,   112,
+   124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
+   134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+   144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+   164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+   174,   175,   176,    -1,    -1,    -1,    -1,    -1,    -1,   183,
+   184,   185,   186,    -1,   188,   189,   190,    -1,    -1,    -1,
+   183,   184,   185,    24,   187,    -1,    27,    -1,    29,    30,
+    31,    32,    33,    34,    24,    25,    -1,    -1,    -1,    29,
+    30,    31,    32,    33,    34,    46,    47,    48,    -1,    -1,
+    -1,    -1,    -1,    -1,    24,    25,    46,    47,    48,    29,
+    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,    70,
+    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,    48,    24,
+    70,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   107,   108,   109,    -1,   111,   112,   113,   114,
-   115,   116,   117,   118,   119,   120,    -1,   122,   123,   124,
-   125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-   135,   136,    -1,   138,   139,   140,   141,   142,   143,   144,
-   145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,   173,    88,
-    89,    90,    -1,    -1,   179,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,
-   109,    -1,   111,   112,   113,   114,   115,   116,   117,   118,
-   119,   120,    -1,   122,   123,   124,   125,   126,   127,   128,
-   129,   130,   131,   132,   133,   134,   135,   136,    -1,   138,
-   139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-   149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,   173,    -1,    -1,    -1,    -1,    -1,
-   179,   180,   107,   108,   109,    -1,   111,   112,   113,   114,
-   115,   116,   117,   118,   119,   120,    -1,   122,   123,   124,
+    70,    46,    47,    48,    -1,    -1,    -1,    -1,    24,    -1,
+    -1,   112,    -1,    29,    30,    31,    32,    33,    34,    -1,
+    -1,    -1,   112,    -1,    -1,    70,    -1,    -1,    24,    -1,
+    46,    47,    48,    29,    30,    31,    32,    33,    34,    24,
+    -1,    -1,   112,    -1,    29,    30,    31,    32,    33,    34,
+    46,    47,    48,    -1,    70,    -1,    -1,    -1,    -1,    -1,
+    -1,    46,    47,    48,    -1,    -1,    -1,   112,    -1,    -1,
+    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   183,   184,   185,    70,   187,    -1,    -1,    -1,
+    -1,    -1,    -1,   183,   184,   185,   112,   187,    24,    -1,
+    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
+    -1,    -1,    -1,   183,   184,   185,   112,   187,    -1,    -1,
+    46,    47,    48,    -1,    -1,    -1,    -1,   112,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   183,   184,
+   185,    -1,   187,    -1,    70,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   183,   184,   185,
+    -1,   187,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   112,   183,   184,   185,
+    -1,   187,    -1,    -1,    -1,    42,    43,    -1,   183,   184,
+   185,    -1,   187,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   183,   184,   185,
+    -1,   187,   109,   110,   111,    -1,   113,   114,   115,   116,
+   117,   118,   119,   120,   121,   122,    -1,   124,   125,   126,
+   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+   137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+   147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+   167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   185,   186,
+    -1,    -1,    -1,   190,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    67,    68,    69,    -1,    71,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   109,   110,   111,    -1,   113,   114,
+   115,   116,   117,   118,   119,   120,   121,   122,    -1,   124,
    125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-   135,   136,    -1,   138,   139,   140,   141,   142,   143,   144,
+   135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
    145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
    155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,   173,    -1,
-    -1,    -1,    -1,    -1,   179,   180
+   165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+   175,   176,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   185,   186,    -1,    -1,    -1,   190,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,   111,    -1,
+   113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+    -1,   124,   125,   126,   127,   128,   129,   130,   131,   132,
+   133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+   143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+   173,   174,   175,   176,    45,    -1,    -1,    -1,    -1,    -1,
+   183,   184,   185,   186,    -1,    -1,    -1,   190,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,
+   111,    -1,   113,   114,   115,   116,   117,   118,   119,   120,
+   121,   122,    -1,   124,   125,   126,   127,   128,   129,   130,
+   131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
+   141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+   171,   172,   173,   174,   175,   176,    67,    68,    69,    -1,
+    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,   190,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,
+   111,    -1,   113,   114,   115,   116,   117,   118,   119,   120,
+   121,   122,    -1,   124,   125,   126,   127,   128,   129,   130,
+   131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
+   141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+   171,   172,   173,   174,   175,   176,    90,    91,    92,    -1,
+    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,   190,
+    -1,    -1,    -1,    -1,    -1,   109,   110,   111,    -1,   113,
+   114,   115,   116,   117,   118,   119,   120,   121,   122,    -1,
+   124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
+   134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+   144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+   164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+   174,   175,   176,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   185,   186,   109,   110,   111,   190,   113,   114,   115,
+   116,   117,   118,   119,   120,   121,   122,    -1,   124,   125,
+   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+   136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+   176,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   185,
+   186,    -1,    -1,    -1,   190
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/usr/share/bison.simple"
+#line 3 "/usr/lib/bison.simple"
+/* This file comes from bison-1.28.  */
 
 /* Skeleton output parser for bison,
    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -2471,46 +2624,66 @@ static const short yycheck[] = {     0,
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /* As a special exception, when this file is copied by Bison into a
    Bison output file, you may use that output file without restriction.
    This special exception was added by the Free Software Foundation
    in version 1.24 of Bison.  */
 
-#ifndef alloca
+/* This is the parser code that is written into each bison parser
+  when the %semantic_parser declaration is not specified in the grammar.
+  It was written by Richard Stallman by simplifying the hairy parser
+  used when %semantic_parser is specified.  */
+
+#ifndef YYSTACK_USE_ALLOCA
+#ifdef alloca
+#define YYSTACK_USE_ALLOCA
+#else /* alloca not defined */
 #ifdef __GNUC__
+#define YYSTACK_USE_ALLOCA
 #define alloca __builtin_alloca
 #else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
+#define YYSTACK_USE_ALLOCA
 #include <alloca.h>
 #else /* not sparc */
-#if defined (MSDOS) && !defined (__TURBOC__)
+/* We think this test detects Watcom and Microsoft C.  */
+/* This used to test MSDOS, but that is a bad idea
+   since that symbol is in the user namespace.  */
+#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
+#if 0 /* No need for malloc.h, which pollutes the namespace;
+        instead, just don't use alloca.  */
 #include <malloc.h>
+#endif
 #else /* not MSDOS, or __TURBOC__ */
 #if defined(_AIX)
-#include <malloc.h>
+/* I don't know what this was needed for, but it pollutes the namespace.
+   So I turned it off.   rms, 2 May 1997.  */
+/* #include <malloc.h>  */
  #pragma alloca
-#else /* not MSDOS, __TURBOC__, or _AIX */
-#ifdef __hpux
-#ifdef __cplusplus
-extern "C" {
-void *alloca (unsigned int);
-};
-#else /* not __cplusplus */
-void *alloca ();
-#endif /* not __cplusplus */
+#define YYSTACK_USE_ALLOCA
+#else /* not MSDOS, or __TURBOC__, or _AIX */
+#if 0
+#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
+                and on HPUX 10.  Eventually we can turn this on.  */
+#define YYSTACK_USE_ALLOCA
+#define alloca __builtin_alloca
 #endif /* __hpux */
+#endif
 #endif /* not _AIX */
 #endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc.  */
-#endif /* not GNU C.  */
-#endif /* alloca not defined.  */
+#endif /* not sparc */
+#endif /* not GNU C */
+#endif /* alloca not defined */
+#endif /* YYSTACK_USE_ALLOCA not defined */
 
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
+#ifdef YYSTACK_USE_ALLOCA
+#define YYSTACK_ALLOC alloca
+#else
+#define YYSTACK_ALLOC malloc
+#endif
 
 /* Note: there must be only one dollar sign in this file.
    It is replaced by the list of actions, each action
@@ -2520,8 +2693,8 @@ void *alloca ();
 #define yyclearin      (yychar = YYEMPTY)
 #define YYEMPTY                -2
 #define YYEOF          0
-#define YYACCEPT       return(0)
-#define YYABORT        return(1)
+#define YYACCEPT       goto yyacceptlab
+#define YYABORT        goto yyabortlab
 #define YYERROR                goto yyerrlab1
 /* Like YYERROR except do call yyerror.
    This remains here temporarily to ease the
@@ -2602,12 +2775,12 @@ int yydebug;                    /*  nonzero means print parse trace     */
 #ifndef YYMAXDEPTH
 #define YYMAXDEPTH 10000
 #endif
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-int yyparse (void);
-#endif
 \f
+/* Define __yy_memcpy.  Note that the size argument
+   should be passed with type unsigned int, because that is what the non-GCC
+   definitions require.  With GCC, __builtin_memcpy takes an arg
+   of type size_t, but it can handle unsigned int.  */
+
 #if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
 #define __yy_memcpy(TO,FROM,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
 #else                          /* not GNU C or C++ */
@@ -2619,7 +2792,7 @@ static void
 __yy_memcpy (to, from, count)
      char *to;
      char *from;
-     int count;
+     unsigned int count;
 {
   register char *f = from;
   register char *t = to;
@@ -2634,10 +2807,10 @@ __yy_memcpy (to, from, count)
 /* This is the most reliable way to avoid incompatibilities
    in available built-in functions on various systems.  */
 static void
-__yy_memcpy (char *to, char *from, int count)
+__yy_memcpy (char *to, char *from, unsigned int count)
 {
-  register char *f = from;
   register char *t = to;
+  register char *f = from;
   register int i = count;
 
   while (i-- > 0)
@@ -2647,7 +2820,7 @@ __yy_memcpy (char *to, char *from, int count)
 #endif
 #endif
 \f
-#line 196 "/usr/share/bison.simple"
+#line 217 "/usr/lib/bison.simple"
 
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
@@ -2668,6 +2841,15 @@ __yy_memcpy (char *to, char *from, int count)
 #define YYPARSE_PARAM_DECL
 #endif /* not YYPARSE_PARAM */
 
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+#ifdef YYPARSE_PARAM
+int yyparse (void *);
+#else
+int yyparse (void);
+#endif
+#endif
+
 int
 yyparse(YYPARSE_PARAM_ARG)
      YYPARSE_PARAM_DECL
@@ -2696,6 +2878,7 @@ yyparse(YYPARSE_PARAM_ARG)
 #endif
 
   int yystacksize = YYINITDEPTH;
+  int yyfree_stacks = 0;
 
 #ifdef YYPURE
   int yychar;
@@ -2780,18 +2963,32 @@ yynewstate:
       if (yystacksize >= YYMAXDEPTH)
        {
          yyerror("parser stack overflow");
+         if (yyfree_stacks)
+           {
+             free (yyss);
+             free (yyvs);
+#ifdef YYLSP_NEEDED
+             free (yyls);
+#endif
+           }
          return 2;
        }
       yystacksize *= 2;
       if (yystacksize > YYMAXDEPTH)
        yystacksize = YYMAXDEPTH;
-      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
-      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
+#ifndef YYSTACK_USE_ALLOCA
+      yyfree_stacks = 1;
+#endif
+      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
+      __yy_memcpy ((char *)yyss, (char *)yyss1,
+                  size * (unsigned int) sizeof (*yyssp));
+      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
+      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
+                  size * (unsigned int) sizeof (*yyvsp));
 #ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
+      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
+      __yy_memcpy ((char *)yyls, (char *)yyls1,
+                  size * (unsigned int) sizeof (*yylsp));
 #endif
 #endif /* no yyoverflow */
 
@@ -2951,53 +3148,63 @@ yyreduce:
 
   switch (yyn) {
 
+case 3:
+#line 317 "cgrammar.y"
+{ context_checkGlobalScope (); ;
+    break;}
+case 4:
+#line 318 "cgrammar.y"
+{ context_checkGlobalScope (); ;
+    break;}
 case 5:
-#line 223 "cgrammar.y"
+#line 321 "cgrammar.y"
 { uentry_clearDecl (); ;
     break;}
 case 6:
-#line 224 "cgrammar.y"
+#line 322 "cgrammar.y"
 { uentry_clearDecl (); ;
     break;}
 case 7:
-#line 225 "cgrammar.y"
+#line 323 "cgrammar.y"
 { uentry_clearDecl (); ;
     break;}
 case 8:
-#line 226 "cgrammar.y"
+#line 324 "cgrammar.y"
 { uentry_clearDecl (); ;
     break;}
 case 9:
-#line 227 "cgrammar.y"
+#line 325 "cgrammar.y"
 { uentry_clearDecl (); ;
     break;}
 case 10:
-#line 228 "cgrammar.y"
+#line 326 "cgrammar.y"
 { uentry_checkDecl (); exprNode_free (yyvsp[0].expr); ;
     break;}
 case 11:
-#line 229 "cgrammar.y"
+#line 327 "cgrammar.y"
 { uentry_clearDecl (); ;
     break;}
 case 12:
-#line 233 "cgrammar.y"
+#line 331 "cgrammar.y"
 { checkConstant (yyvsp[-6].qtyp, yyvsp[-4].ntyp); ;
     break;}
 case 13:
-#line 235 "cgrammar.y"
+#line 333 "cgrammar.y"
 { checkValueConstant (yyvsp[-9].qtyp, yyvsp[-7].ntyp, yyvsp[-3].expr) ; ;
     break;}
 case 14:
-#line 238 "cgrammar.y"
-{ context_enterFunctionDecl (); ;
+#line 336 "cgrammar.y"
+{ context_enterFunctionHeader (); ;
     break;}
 case 15:
-#line 239 "cgrammar.y"
-{ declareStaticFunction (yyvsp[-2].ntyp); context_quietExitFunction (); 
-     context_exitFunctionDecl (); ;
+#line 337 "cgrammar.y"
+{ 
+     declareStaticFunction (yyvsp[-2].ntyp); context_quietExitFunction (); 
+     context_exitFunctionHeader (); 
+   ;
     break;}
 case 16:
-#line 244 "cgrammar.y"
+#line 344 "cgrammar.y"
 { 
      qtype qint = qtype_create (ctype_int);
      yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, qint);
@@ -3005,84 +3212,83 @@ case 16:
    ;
     break;}
 case 17:
-#line 250 "cgrammar.y"
+#line 350 "cgrammar.y"
 { yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, yyvsp[-2].qtyp); ;
     break;}
 case 19:
-#line 255 "cgrammar.y"
+#line 355 "cgrammar.y"
 { yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ;
     break;}
 case 20:
-#line 258 "cgrammar.y"
+#line 358 "cgrammar.y"
 { yyval.ntyp = idDecl_create (yyvsp[0].cname, qtype_unknown ()); ;
     break;}
 case 21:
-#line 260 "cgrammar.y"
+#line 360 "cgrammar.y"
 { yyval.ntyp = idDecl_expectFunction (yyvsp[-2].ntyp); ;
     break;}
 case 22:
-#line 262 "cgrammar.y"
+#line 362 "cgrammar.y"
 { yyval.ntyp = idDecl_replaceCtype (yyvsp[-2].ntyp, ctype_makeArray (idDecl_getCtype (yyvsp[-2].ntyp))); ;
     break;}
 case 23:
-#line 264 "cgrammar.y"
-{ 
-     int value;
-
-     if (exprNode_hasValue (yyvsp[-2].expr) 
-        && multiVal_isInt (exprNode_getValue (yyvsp[-2].expr)))
+#line 364 "cgrammar.y"
+{
+     exprNode_findValue(yyvsp[-2].expr);
+     if (exprNode_hasValue (yyvsp[-2].expr)) 
        {
-        value = (int) multiVal_forceInt (exprNode_getValue (yyvsp[-2].expr));
-       }
+        yyval.ntyp = idDecl_replaceCtype (yyvsp[-5].ntyp, ctype_makeFixedArray (idDecl_getCtype (yyvsp[-5].ntyp), exprNode_getLongValue (yyvsp[-2].expr)));
+       } 
      else
        {
-        value = 0;
+        yyval.ntyp = idDecl_replaceCtype (yyvsp[-5].ntyp, ctype_makeArray (idDecl_getCtype (yyvsp[-5].ntyp))); 
        }
-
-     yyval.ntyp = idDecl_replaceCtype (yyvsp[-5].ntyp, ctype_makeFixedArray (idDecl_getCtype (yyvsp[-5].ntyp), value));
    ;
     break;}
 case 24:
-#line 280 "cgrammar.y"
-{ setCurrentParams (uentryList_missingParams); 
-        ;
+#line 376 "cgrammar.y"
+{ setCurrentParams (uentryList_missingParams); ;
     break;}
 case 25:
-#line 283 "cgrammar.y"
+#line 378 "cgrammar.y"
 { /* need to support globals and modifies here! */
      ctype ct = ctype_makeFunction (idDecl_getCtype (yyvsp[-5].ntyp), 
                                    uentryList_makeMissingParams ());
-
+     
      yyval.ntyp = idDecl_replaceCtype (yyvsp[-5].ntyp, ct);
-     context_popLoc (); 
+     idDecl_addClauses (yyval.ntyp, yyvsp[0].funcclauselist);
+     context_popLoc ();
+     /*drl 7/25/01 added*/
+     setImplictfcnConstraints();
    ;
     break;}
 case 26:
-#line 291 "cgrammar.y"
-{ setCurrentParams (yyvsp[-1].entrylist); 
-        ;
+#line 389 "cgrammar.y"
+{ setCurrentParams (yyvsp[-1].entrylist); ;
     break;}
 case 27:
-#line 294 "cgrammar.y"
-{ clearCurrentParams ();
+#line 391 "cgrammar.y"
+{ setImplictfcnConstraints ();
+     clearCurrentParams ();
      yyval.ntyp = idDecl_replaceCtype (yyvsp[-6].ntyp, ctype_makeFunction (idDecl_getCtype (yyvsp[-6].ntyp), yyvsp[-3].entrylist));
+     idDecl_addClauses (yyval.ntyp, yyvsp[0].funcclauselist);
      context_popLoc (); 
    ;
     break;}
 case 28:
-#line 300 "cgrammar.y"
+#line 399 "cgrammar.y"
 { yyval.ntyp = idDecl_create (yyvsp[0].cname, qtype_unknown ()); ;
     break;}
 case 29:
-#line 302 "cgrammar.y"
+#line 401 "cgrammar.y"
 { yyval.ntyp = idDecl_expectFunction (yyvsp[-2].ntyp); ;
     break;}
 case 30:
-#line 304 "cgrammar.y"
+#line 403 "cgrammar.y"
 { yyval.ntyp = idDecl_replaceCtype (yyvsp[-2].ntyp, ctype_makeArray (idDecl_getCtype (yyvsp[-2].ntyp))); ;
     break;}
 case 31:
-#line 306 "cgrammar.y"
+#line 405 "cgrammar.y"
 { 
      int value;
 
@@ -3100,417 +3306,500 @@ case 31:
    ;
     break;}
 case 32:
-#line 322 "cgrammar.y"
-{ setCurrentParams (uentryList_missingParams); 
-        ;
+#line 421 "cgrammar.y"
+{ setCurrentParams (uentryList_missingParams); ;
     break;}
 case 33:
-#line 325 "cgrammar.y"
-{ /* need to support globals and modifies here! */
+#line 423 "cgrammar.y"
+{
      ctype ct = ctype_makeFunction (idDecl_getCtype (yyvsp[-5].ntyp), 
                                    uentryList_makeMissingParams ());
-
+     
      yyval.ntyp = idDecl_replaceCtype (yyvsp[-5].ntyp, ct);
+     idDecl_addClauses (yyval.ntyp, yyvsp[0].funcclauselist);
      context_popLoc (); 
    ;
     break;}
 case 34:
-#line 333 "cgrammar.y"
-{ setCurrentParams (yyvsp[-1].entrylist); 
-        ;
+#line 432 "cgrammar.y"
+{ setCurrentParams (yyvsp[-1].entrylist); ;
     break;}
 case 35:
-#line 336 "cgrammar.y"
-{ clearCurrentParams ();
+#line 434 "cgrammar.y"
+{ 
+     clearCurrentParams ();
      yyval.ntyp = idDecl_replaceCtype (yyvsp[-6].ntyp, ctype_makeFunction (idDecl_getCtype (yyvsp[-6].ntyp), yyvsp[-3].entrylist));
+     idDecl_addClauses (yyval.ntyp, yyvsp[0].funcclauselist);
      context_popLoc (); 
    ;
     break;}
 case 36:
-#line 343 "cgrammar.y"
+#line 443 "cgrammar.y"
 { setCurrentParams (yyvsp[-1].entrylist); ;
     break;}
 case 37:
-#line 344 "cgrammar.y"
+#line 444 "cgrammar.y"
 { clearCurrentParams (); ;
     break;}
 case 38:
-#line 345 "cgrammar.y"
+#line 445 "cgrammar.y"
 { declareCIter (yyvsp[-8].cname, yyvsp[-6].entrylist); ;
     break;}
 case 39:
-#line 348 "cgrammar.y"
+#line 448 "cgrammar.y"
 { exprNode_checkMacroBody (yyvsp[-1].expr); ;
     break;}
 case 40:
-#line 349 "cgrammar.y"
+#line 449 "cgrammar.y"
 { exprNode_checkIterBody (yyvsp[-1].expr); ;
     break;}
 case 41:
-#line 350 "cgrammar.y"
+#line 450 "cgrammar.y"
 { exprNode_checkIterEnd (yyvsp[-1].expr); ;
     break;}
 case 42:
-#line 351 "cgrammar.y"
+#line 451 "cgrammar.y"
 { exprChecks_checkEmptyMacroBody (); ;
     break;}
 case 43:
-#line 354 "cgrammar.y"
-{ declareFunction (yyvsp[0].ntyp); ;
+#line 454 "cgrammar.y"
+{ clabstract_declareFunction (yyvsp[0].ntyp); ;
     break;}
 case 44:
-#line 357 "cgrammar.y"
-{ setProcessingGlobMods (); ;
+#line 458 "cgrammar.y"
+{ yyval.msconstraint = metaStateConstraint_create (yyvsp[-2].msspec, yyvsp[0].msexpr); ;
     break;}
 case 45:
-#line 358 "cgrammar.y"
-{ clearProcessingGlobMods (); ;
+#line 461 "cgrammar.y"
+{ cscanner_expectingMetaStateName (); ;
     break;}
 case 46:
-#line 361 "cgrammar.y"
-{ setProcessingGlobMods (); ;
+#line 462 "cgrammar.y"
+{ cscanner_clearExpectingMetaStateName ();
+      yyval.msspec = metaStateSpecifier_create (yyvsp[-3].sr, yyvsp[0].msinfo); ;
     break;}
 case 47:
-#line 362 "cgrammar.y"
-{ clearProcessingGlobMods (); ;
-    break;}
-case 54:
-#line 377 "cgrammar.y"
-{ ; ;
+#line 464 "cgrammar.y"
+{ cscanner_expectingMetaStateName (); ;
     break;}
-case 55:
-#line 378 "cgrammar.y"
-{ ; ;
+case 48:
+#line 465 "cgrammar.y"
+{ cscanner_clearExpectingMetaStateName ();
+      yyval.msspec = metaStateSpecifier_createElipsis (yyvsp[0].msinfo); ;
     break;}
-case 56:
-#line 381 "cgrammar.y"
-{ globListAdd (yyvsp[0].sr, yyvsp[-1].tquallist); ;
+case 49:
+#line 469 "cgrammar.y"
+{ yyval.msexpr = metaStateExpression_create (yyvsp[0].msspec); ;
     break;}
-case 57:
-#line 384 "cgrammar.y"
-{ yyval.sr = uentry_getSref (yyvsp[0].entry); ;
+case 50:
+#line 470 "cgrammar.y"
+{ yyval.msexpr = metaStateExpression_createMerge (yyvsp[-2].msspec, yyvsp[0].msexpr); ;
     break;}
-case 58:
-#line 385 "cgrammar.y"
-{ yyval.sr = globListUnrecognized (yyvsp[0].cname); ;
+case 52:
+#line 478 "cgrammar.y"
+{ yyval.conL = constraintList_add (yyvsp[0].conL, yyvsp[-2].con); ;
     break;}
-case 59:
-#line 388 "cgrammar.y"
-{ yyval.typequal = qual_createUndef (); ;
+case 53:
+#line 479 "cgrammar.y"
+{ yyval.conL = constraintList_single (yyvsp[0].con); ;
     break;}
-case 60:
-#line 389 "cgrammar.y"
-{ yyval.typequal = qual_createKilled (); ;
+case 54:
+#line 482 "cgrammar.y"
+{
+ yyval.con = makeConstraintParse3 (yyvsp[-2].conE, yyvsp[-1].tok, yyvsp[0].conE);
+ DPRINTF(("Done BufConstraint1\n")); ;
     break;}
 case 61:
-#line 390 "cgrammar.y"
-{ yyval.typequal = qual_createOut (); ;
+#line 497 "cgrammar.y"
+{yyval.conE = constraintExpr_parseMakeUnaryOp (yyvsp[-3].tok, yyvsp[-1].conE);  DPRINTF( ("Got BufConstraintExpr UNary Op ") ); ;
     break;}
 case 62:
-#line 391 "cgrammar.y"
-{ yyval.typequal = qual_createIn (); ;
+#line 498 "cgrammar.y"
+{
+   DPRINTF( ("Got BufConstraintExpr BINary Op ") );
+   yyval.conE = constraintExpr_parseMakeBinaryOp (yyvsp[-3].conE, yyvsp[-2].tok, yyvsp[-1].conE); ;
     break;}
 case 63:
-#line 392 "cgrammar.y"
-{ yyval.typequal = qual_createPartial (); ;
+#line 503 "cgrammar.y"
+{ yyval.conE =  constraintExpr_makeTermsRef (yyvsp[0].sr);;
     break;}
 case 64:
-#line 395 "cgrammar.y"
-{ yyval.tquallist = qualList_undefined; ;
+#line 504 "cgrammar.y"
+{ yyval.conE = constraintExpr_makeIntLiteral (exprNode_getLongValue (yyvsp[0].expr)); ;
     break;}
 case 65:
-#line 396 "cgrammar.y"
-{ yyval.tquallist = qualList_add (yyvsp[0].tquallist, yyvsp[-1].typequal); ;
+#line 508 "cgrammar.y"
+{ /*@-onlytrans@*/ yyval.sr = checkbufferConstraintClausesId (yyvsp[0].entry); /*@=onlytrans@*/ /*@i523@*/ ;
     break;}
 case 66:
-#line 399 "cgrammar.y"
-{ setProcessingGlobalsList (); ;
+#line 510 "cgrammar.y"
+{ yyval.sr = fixStateClausesId (yyvsp[0].cname); ;
     break;}
 case 67:
-#line 401 "cgrammar.y"
-{ unsetProcessingGlobals (); ;
+#line 512 "cgrammar.y"
+{ yyval.sr = sRef_makeAnyArrayFetch (yyvsp[-2].sr); ;
     break;}
 case 68:
-#line 402 "cgrammar.y"
-{ setProcessingGlobalsList (); ;
+#line 514 "cgrammar.y"
+{
+    /*
+    char *t; int c; 
+    t =  cstring_toCharsSafe (exprNode_unparse($3)); 
+    c = atoi( t );
+    */
+    yyval.sr = sRef_makeArrayFetchKnown (yyvsp[-3].sr, exprNode_getLongValue (yyvsp[-1].expr));
+  ;
     break;}
 case 69:
-#line 404 "cgrammar.y"
-{ unsetProcessingGlobals (); ;
+#line 523 "cgrammar.y"
+{ yyval.sr = sRef_constructPointer (yyvsp[0].sr); ;
     break;}
 case 70:
-#line 406 "cgrammar.y"
-{ setFunctionNoGlobals ();
-     setFunctionModifies (sRefSet_single (sRef_makeNothing ())); 
-   ;
-    break;}
-case 73:
-#line 413 "cgrammar.y"
-{ setProcessingGlobalsList (); ;
+#line 525 "cgrammar.y"
+{ yyval.sr = yyvsp[-1].sr; ;
     break;}
-case 74:
-#line 415 "cgrammar.y"
-{ unsetProcessingGlobals (); ;
+case 71:
+#line 527 "cgrammar.y"
+{ cstring_markOwned (yyvsp[0].cname); yyval.sr = sRef_buildField (yyvsp[-2].sr, yyvsp[0].cname); ;
     break;}
-case 75:
-#line 416 "cgrammar.y"
-{ setProcessingGlobalsList (); ;
+case 72:
+#line 529 "cgrammar.y"
+{ cstring_markOwned (yyvsp[0].cname); yyval.sr = sRef_makeArrow (yyvsp[-2].sr, yyvsp[0].cname); ;
     break;}
 case 76:
-#line 418 "cgrammar.y"
-{ unsetProcessingGlobals (); ;
+#line 556 "cgrammar.y"
+{ yyval.funcclauselist = functionClauseList_new (); ;
     break;}
 case 77:
-#line 420 "cgrammar.y"
-{ setFunctionNoGlobals ();
-     setFunctionModifies (sRefSet_single (sRef_makeNothing ())); 
-   ;
+#line 558 "cgrammar.y"
+{ yyval.funcclauselist = functionClauseList_prepend (yyvsp[0].funcclauselist, yyvsp[-1].funcclause); ;
+    break;}
+case 78:
+#line 566 "cgrammar.y"
+{ yyval.funcclauselist = functionClauseList_new (); ;
+    break;}
+case 79:
+#line 568 "cgrammar.y"
+{ yyval.funcclauselist = functionClauseList_prepend (yyvsp[0].funcclauselist, yyvsp[-1].funcclause); ;
+    break;}
+case 80:
+#line 571 "cgrammar.y"
+{ yyval.funcclause = functionClause_createGlobals (yyvsp[0].globsclause); ;
+    break;}
+case 81:
+#line 572 "cgrammar.y"
+{ yyval.funcclause = functionClause_createModifies (yyvsp[0].modsclause); ;
     break;}
 case 82:
-#line 432 "cgrammar.y"
-{
-     context_setProtectVars (); enterParamsTemp (); 
-     sRef_setGlobalScopeSafe (); 
-   ;
+#line 573 "cgrammar.y"
+{ yyval.funcclause = functionClause_createModifies (yyvsp[0].modsclause); ;
     break;}
 case 83:
-#line 437 "cgrammar.y"
-{ 
-     setFunctionModifies (yyvsp[0].srset); exitParamsTemp ();
-     sRef_clearGlobalScopeSafe (); 
-     context_releaseVars ();
-   ;
+#line 574 "cgrammar.y"
+{ yyval.funcclause = functionClause_createState (yyvsp[0].stateclause); ;
     break;}
 case 84:
-#line 445 "cgrammar.y"
-{
-     context_setProtectVars (); enterParamsTemp (); 
-     sRef_setGlobalScopeSafe (); 
-   ;
+#line 575 "cgrammar.y"
+{ yyval.funcclause = yyvsp[0].funcclause; ;
     break;}
 case 85:
-#line 450 "cgrammar.y"
+#line 576 "cgrammar.y"
+{ yyval.funcclause = functionClause_createWarn (yyvsp[0].warnclause); ;
+    break;}
+case 86:
+#line 579 "cgrammar.y"
+{ yyval.funcclause = functionClause_createGlobals (yyvsp[0].globsclause); ;
+    break;}
+case 87:
+#line 580 "cgrammar.y"
+{ yyval.funcclause = functionClause_createModifies (yyvsp[0].modsclause); ;
+    break;}
+case 88:
+#line 581 "cgrammar.y"
+{ yyval.funcclause = functionClause_createModifies (yyvsp[0].modsclause); ;
+    break;}
+case 89:
+#line 582 "cgrammar.y"
+{ yyval.funcclause = functionClause_createState (yyvsp[0].stateclause); ;
+    break;}
+case 90:
+#line 583 "cgrammar.y"
+{ yyval.funcclause = yyvsp[0].funcclause; ;
+    break;}
+case 91:
+#line 584 "cgrammar.y"
+{ yyval.funcclause = functionClause_createWarn (yyvsp[0].warnclause); ;
+    break;}
+case 92:
+#line 587 "cgrammar.y"
+{ yyval.globsclause = yyvsp[-1].globsclause; ;
+    break;}
+case 93:
+#line 590 "cgrammar.y"
+{ setProcessingGlobalsList (); ;
+    break;}
+case 94:
+#line 592 "cgrammar.y"
 { 
-     setFunctionModifies (yyvsp[0].srset); exitParamsTemp ();
-     sRef_clearGlobalScopeSafe (); 
-     context_releaseVars ();
+     unsetProcessingGlobals (); 
+     yyval.globsclause = globalsClause_create (yyvsp[-3].tok, yyvsp[-1].globset); 
    ;
     break;}
 case 95:
-#line 474 "cgrammar.y"
-{ yyval.sck = SP_ISONLY; ;
+#line 598 "cgrammar.y"
+{ yyval.modsclause = modifiesClause_createNoMods (yyvsp[0].tok); ;
     break;}
 case 96:
-#line 475 "cgrammar.y"
-{ yyval.sck = SP_ISOBSERVER; ;
+#line 601 "cgrammar.y"
+{ yyval.modsclause = yyvsp[-1].modsclause; ;
     break;}
 case 97:
-#line 476 "cgrammar.y"
-{ yyval.sck = SP_ISEXPOSED; ;
+#line 605 "cgrammar.y"
+{
+     context_setProtectVars (); enterParamsTemp (); 
+     sRef_setGlobalScopeSafe (); 
+   ;
     break;}
 case 98:
-#line 477 "cgrammar.y"
-{ yyval.sck = SP_ISDEPENDENT; ;
+#line 610 "cgrammar.y"
+{ 
+     exitParamsTemp ();
+     sRef_clearGlobalScopeSafe (); 
+     context_releaseVars ();
+     yyval.modsclause = modifiesClause_create (yyvsp[-2].tok, yyvsp[0].srset);
+   ;
     break;}
 case 99:
-#line 478 "cgrammar.y"
-{ yyval.sck = SP_ISOWNED; ;
+#line 619 "cgrammar.y"
+{ yyval.flagspec = flagSpec_createPlain (yyvsp[0].cname); ;
     break;}
 case 100:
-#line 479 "cgrammar.y"
-{ yyval.sck = SP_ISSHARED; ;
-    break;}
-case 101:
-#line 480 "cgrammar.y"
-{ yyval.sck = SP_ISNULL; ;
-    break;}
-case 102:
-#line 481 "cgrammar.y"
-{ yyval.sck = SP_ISNOTNULL; ;
+#line 621 "cgrammar.y"
+{ yyval.flagspec = flagSpec_createOr (yyvsp[-2].cname, yyvsp[0].flagspec); ;
     break;}
 case 103:
-#line 485 "cgrammar.y"
-{
-     context_setProtectVars (); 
-     enterParamsTemp (); 
-     sRef_setGlobalScopeSafe (); 
-   ;
+#line 628 "cgrammar.y"
+{ yyval.warnclause = warnClause_undefined; ;
     break;}
 case 104:
-#line 491 "cgrammar.y"
-{ 
-     setFunctionSpecialClause (yyvsp[-6].tok, yyvsp[-3].srset, yyvsp[-1].tok); 
-     exitParamsTemp ();
-     sRef_clearGlobalScopeSafe (); 
-     context_releaseVars ();
-   ;
+#line 631 "cgrammar.y"
+{ yyval.warnclause = yyvsp[-1].warnclause; ;
     break;}
 case 105:
-#line 498 "cgrammar.y"
-{
-      context_setProtectVars (); 
-      enterParamsTemp (); 
-      sRef_setGlobalScopeSafe (); 
-    ;
+#line 635 "cgrammar.y"
+{      
+     llassert (exprNode_knownStringValue (yyvsp[0].expr));
+     yyval.warnclause = warnClause_create (yyvsp[-2].tok, yyvsp[-1].flagspec, cstring_copy (multiVal_forceString (exprNode_getValue (yyvsp[0].expr)))); 
+     exprNode_free (yyvsp[0].expr);
+   ;
     break;}
 case 106:
-#line 504 "cgrammar.y"
-{ 
-      setFunctionStateSpecialClause (yyvsp[-7].tok, yyvsp[-5].sck, yyvsp[-3].srset, yyvsp[-1].tok); 
-      exitParamsTemp ();
-      sRef_clearGlobalScopeSafe (); 
-      context_releaseVars ();
-    ;
+#line 641 "cgrammar.y"
+{ yyval.warnclause = warnClause_create (yyvsp[-1].tok, yyvsp[0].flagspec, cstring_undefined); ;
     break;}
 case 107:
-#line 513 "cgrammar.y"
+#line 644 "cgrammar.y"
+{ yyval.globset = globSet_single (yyvsp[0].sr); ;
+    break;}
+case 108:
+#line 645 "cgrammar.y"
+{ yyval.globset = globSet_insert (yyvsp[-2].globset, yyvsp[0].sr); ;
+    break;}
+case 109:
+#line 648 "cgrammar.y"
+{ yyval.sr = clabstract_createGlobal (yyvsp[0].sr, yyvsp[-1].tquallist); ;
+    break;}
+case 110:
+#line 651 "cgrammar.y"
+{ yyval.tquallist = qualList_undefined; ;
+    break;}
+case 111:
+#line 652 "cgrammar.y"
+{ yyval.tquallist = qualList_add (yyvsp[0].tquallist, yyvsp[-1].typequal); ;
+    break;}
+case 112:
+#line 655 "cgrammar.y"
+{ yyval.sr = uentry_getSref (yyvsp[0].entry); ;
+    break;}
+case 113:
+#line 656 "cgrammar.y"
+{ yyval.sr = clabstract_unrecognizedGlobal (yyvsp[0].cname); ;
+    break;}
+case 114:
+#line 657 "cgrammar.y"
+{ yyval.sr = clabstract_checkGlobal (yyvsp[0].expr); ;
+    break;}
+case 115:
+#line 660 "cgrammar.y"
+{ yyval.typequal = qual_createUndef (); ;
+    break;}
+case 116:
+#line 661 "cgrammar.y"
+{ yyval.typequal = qual_createKilled (); ;
+    break;}
+case 117:
+#line 662 "cgrammar.y"
+{ yyval.typequal = qual_createOut (); ;
+    break;}
+case 118:
+#line 663 "cgrammar.y"
+{ yyval.typequal = qual_createIn (); ;
+    break;}
+case 119:
+#line 664 "cgrammar.y"
+{ yyval.typequal = qual_createPartial (); ;
+    break;}
+case 127:
+#line 679 "cgrammar.y"
 { 
      qtype qint = qtype_create (ctype_int);
      yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, qint);
      qtype_free (qint);
    ;
     break;}
-case 108:
-#line 519 "cgrammar.y"
+case 128:
+#line 685 "cgrammar.y"
 { yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, yyvsp[-2].qtyp); ;
     break;}
-case 109:
-#line 522 "cgrammar.y"
+case 129:
+#line 688 "cgrammar.y"
 { checkDoneParams (); context_enterInnerContext (); ;
     break;}
-case 110:
-#line 524 "cgrammar.y"
+case 130:
+#line 690 "cgrammar.y"
 {  
      exprNode_checkFunctionBody (yyvsp[0].expr); yyval.expr = yyvsp[0].expr; 
      context_exitInner (yyvsp[0].expr); 
    ;
     break;}
-case 111:
-#line 529 "cgrammar.y"
-{ doneParams (); context_enterInnerContext (); ;
+case 131:
+#line 694 "cgrammar.y"
+{ context_enterOldStyleScope (); ;
     break;}
-case 112:
-#line 531 "cgrammar.y"
+case 132:
+#line 695 "cgrammar.y"
+{ oldStyleDoneParams (); context_enterInnerContext (); ;
+    break;}
+case 133:
+#line 697 "cgrammar.y"
 {
-     context_exitInner (yyvsp[0].expr);
      exprNode_checkFunctionBody (yyvsp[0].expr); 
-     yyval.expr = yyvsp[0].expr; /* old style */ 
+     yyval.expr = yyvsp[0].expr; /* oldstyle */ 
+     context_exitInner (yyvsp[0].expr);
    ;
     break;}
-case 113:
-#line 539 "cgrammar.y"
+case 134:
+#line 705 "cgrammar.y"
 { 
      context_setFunctionDefined (exprNode_loc (yyvsp[0].expr)); 
-     exprNode_checkFunction (context_getHeader (), yyvsp[0].expr); 
+     exprNode_checkFunction (context_getHeader (),  yyvsp[0].expr); 
+     /* DRL 8 8 2000 */
+     
      context_exitFunction ();
    ;
     break;}
-case 114:
-#line 546 "cgrammar.y"
-{ yyval.srset = yyvsp[-2].srset; ;
-    break;}
-case 115:
-#line 547 "cgrammar.y"
-{ yyval.srset = sRefSet_new (); ;
-    break;}
-case 116:
-#line 550 "cgrammar.y"
+case 135:
+#line 714 "cgrammar.y"
 { yyval.srset = yyvsp[-1].srset; ;
     break;}
-case 117:
-#line 551 "cgrammar.y"
+case 136:
+#line 715 "cgrammar.y"
 { yyval.srset = sRefSet_new (); ;
     break;}
-case 118:
-#line 554 "cgrammar.y"
+case 137:
+#line 718 "cgrammar.y"
 { yyval.sr = uentry_getSref (yyvsp[0].entry); checkModifiesId (yyvsp[0].entry); ;
     break;}
-case 119:
-#line 555 "cgrammar.y"
+case 138:
+#line 719 "cgrammar.y"
 { yyval.sr = fixModifiesId (yyvsp[0].cname); ;
     break;}
-case 120:
-#line 556 "cgrammar.y"
+case 139:
+#line 720 "cgrammar.y"
 { yyval.sr = modListArrayFetch (yyvsp[-2].sr, sRef_undefined); ;
     break;}
-case 121:
-#line 557 "cgrammar.y"
+case 140:
+#line 721 "cgrammar.y"
 { yyval.sr = modListArrayFetch (yyvsp[-3].sr, yyvsp[-1].sr); ;
     break;}
-case 122:
-#line 558 "cgrammar.y"
+case 141:
+#line 722 "cgrammar.y"
 { yyval.sr = modListPointer (yyvsp[0].sr); ;
     break;}
-case 123:
-#line 559 "cgrammar.y"
+case 142:
+#line 723 "cgrammar.y"
 { yyval.sr = yyvsp[-1].sr; ;
     break;}
-case 124:
-#line 560 "cgrammar.y"
+case 143:
+#line 724 "cgrammar.y"
 { yyval.sr = modListFieldAccess (yyvsp[-2].sr, yyvsp[0].cname); ;
     break;}
-case 125:
-#line 561 "cgrammar.y"
+case 144:
+#line 725 "cgrammar.y"
 { yyval.sr = modListArrowAccess (yyvsp[-2].sr, yyvsp[0].cname); ;
     break;}
-case 126:
-#line 565 "cgrammar.y"
+case 145:
+#line 729 "cgrammar.y"
 { yyval.sr = yyvsp[0].sr; ;
     break;}
-case 127:
-#line 566 "cgrammar.y"
+case 146:
+#line 730 "cgrammar.y"
 { yyval.sr = sRef_makeUnknown (); /* sRef_makeConstant ($1); ? */ ;
     break;}
-case 128:
-#line 570 "cgrammar.y"
+case 147:
+#line 734 "cgrammar.y"
 { yyval.srset = sRefSet_single (yyvsp[0].sr); ;
     break;}
-case 129:
-#line 571 "cgrammar.y"
+case 148:
+#line 735 "cgrammar.y"
 { yyval.srset = sRefSet_insert (yyvsp[-2].srset, yyvsp[0].sr); ;
     break;}
-case 130:
-#line 575 "cgrammar.y"
-{ yyval.sr = checkSpecClausesId (yyvsp[0].entry); ;
+case 149:
+#line 739 "cgrammar.y"
+{ yyval.sr = checkStateClausesId (yyvsp[0].entry); ;
     break;}
-case 131:
-#line 577 "cgrammar.y"
-{ yyval.sr = fixSpecClausesId (yyvsp[0].cname); ;
+case 150:
+#line 741 "cgrammar.y"
+{ yyval.sr = fixStateClausesId (yyvsp[0].cname); ;
     break;}
-case 132:
-#line 578 "cgrammar.y"
+case 151:
+#line 742 "cgrammar.y"
 { yyval.sr = sRef_makeAnyArrayFetch (yyvsp[-2].sr); ;
     break;}
-case 133:
-#line 579 "cgrammar.y"
+case 152:
+#line 743 "cgrammar.y"
 { yyval.sr = sRef_makeAnyArrayFetch (yyvsp[-3].sr); ;
     break;}
-case 134:
-#line 580 "cgrammar.y"
+case 153:
+#line 744 "cgrammar.y"
 { yyval.sr = sRef_constructPointer (yyvsp[0].sr); ;
     break;}
-case 135:
-#line 581 "cgrammar.y"
+case 154:
+#line 745 "cgrammar.y"
 { yyval.sr = yyvsp[-1].sr; ;
     break;}
-case 136:
-#line 582 "cgrammar.y"
+case 155:
+#line 746 "cgrammar.y"
 { cstring_markOwned (yyvsp[0].cname);
                                            yyval.sr = sRef_buildField (yyvsp[-2].sr, yyvsp[0].cname); ;
     break;}
-case 137:
-#line 584 "cgrammar.y"
+case 156:
+#line 748 "cgrammar.y"
 { cstring_markOwned (yyvsp[0].cname);
                                             yyval.sr = sRef_makeArrow (yyvsp[-2].sr, yyvsp[0].cname); ;
     break;}
-case 138:
-#line 589 "cgrammar.y"
+case 157:
+#line 752 "cgrammar.y"
+{ yyval.srset = sRefSet_undefined ;
+    break;}
+case 159:
+#line 757 "cgrammar.y"
 { if (sRef_isValid (yyvsp[0].sr)) { yyval.srset = sRefSet_single (yyvsp[0].sr); } 
       else { yyval.srset = sRefSet_undefined; } 
     ;
     break;}
-case 139:
-#line 593 "cgrammar.y"
+case 160:
+#line 761 "cgrammar.y"
 { if (sRef_isValid (yyvsp[0].sr))
        {
          yyval.srset = sRefSet_insert (yyvsp[-2].srset, yyvsp[0].sr); 
@@ -3521,822 +3810,985 @@ case 139:
        }
     ;
     break;}
-case 140:
-#line 604 "cgrammar.y"
+case 161:
+#line 772 "cgrammar.y"
 { yyval.expr = exprNode_fromIdentifier (yyvsp[0].entry); ;
     break;}
-case 141:
-#line 605 "cgrammar.y"
+case 162:
+#line 773 "cgrammar.y"
 { yyval.expr = exprNode_fromUIO (yyvsp[0].cname); ;
     break;}
-case 143:
-#line 607 "cgrammar.y"
+case 164:
+#line 775 "cgrammar.y"
 { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ;
     break;}
-case 144:
-#line 608 "cgrammar.y"
-{ yyval.expr = exprNode_fromIdentifier (coerceId (yyvsp[0].ctyp)); ;
+case 165:
+#line 776 "cgrammar.y"
+{ yyval.expr = exprNode_fromIdentifier (coerceId (yyvsp[0].cname)); ;
     break;}
-case 145:
-#line 609 "cgrammar.y"
+case 166:
+#line 777 "cgrammar.y"
 { yyval.expr = exprNode_makeError (); ;
     break;}
-case 147:
-#line 613 "cgrammar.y"
+case 168:
+#line 781 "cgrammar.y"
 { yyval.expr = exprNode_arrayFetch (yyvsp[-3].expr, yyvsp[-1].expr); ;
     break;}
-case 148:
-#line 614 "cgrammar.y"
+case 169:
+#line 782 "cgrammar.y"
 { yyval.expr = exprNode_functionCall (yyvsp[-2].expr, exprNodeList_new ()); ;
     break;}
-case 149:
-#line 615 "cgrammar.y"
-{ yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].alist); ;
+case 170:
+#line 783 "cgrammar.y"
+{ yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].exprlist); ;
     break;}
-case 150:
-#line 616 "cgrammar.y"
+case 171:
+#line 784 "cgrammar.y"
 { yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ;
     break;}
-case 151:
-#line 617 "cgrammar.y"
-{ yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-1].cname); ;
+case 172:
+#line 785 "cgrammar.y"
+{ yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ;
     break;}
-case 152:
-#line 618 "cgrammar.y"
-{ yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-1].cname); ;
+case 173:
+#line 786 "cgrammar.y"
+{ yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ;
     break;}
-case 153:
-#line 619 "cgrammar.y"
+case 174:
+#line 787 "cgrammar.y"
 { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
-case 154:
-#line 620 "cgrammar.y"
+case 175:
+#line 788 "cgrammar.y"
 { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
-case 155:
-#line 623 "cgrammar.y"
-{ yyval.alist = exprNodeList_singleton (yyvsp[0].expr); ;
+case 176:
+#line 791 "cgrammar.y"
+{ yyval.exprlist = exprNodeList_singleton (yyvsp[0].expr); ;
     break;}
-case 156:
-#line 624 "cgrammar.y"
-{ yyval.alist = exprNodeList_push (yyvsp[-2].alist, yyvsp[0].expr); ;
+case 177:
+#line 792 "cgrammar.y"
+{ yyval.exprlist = exprNodeList_push (yyvsp[-2].exprlist, yyvsp[0].expr); ;
     break;}
-case 158:
-#line 628 "cgrammar.y"
+case 179:
+#line 796 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 159:
-#line 629 "cgrammar.y"
+case 180:
+#line 797 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 160:
-#line 630 "cgrammar.y"
+case 181:
+#line 798 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 161:
-#line 631 "cgrammar.y"
+case 182:
+#line 799 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 162:
-#line 632 "cgrammar.y"
+case 183:
+#line 800 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 163:
-#line 633 "cgrammar.y"
+case 184:
+#line 801 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 164:
-#line 634 "cgrammar.y"
+case 185:
+#line 802 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 165:
-#line 635 "cgrammar.y"
+case 186:
+#line 803 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 166:
-#line 636 "cgrammar.y"
+case 187:
+#line 804 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 167:
-#line 637 "cgrammar.y"
+case 188:
+#line 805 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 168:
-#line 641 "cgrammar.y"
-{ yyval.expr = exprNode_offsetof (yyvsp[-5].qtyp, yyvsp[-2].cname); ;
+case 189:
+#line 808 "cgrammar.y"
+{ yyval.cstringlist = cstringList_add (yyvsp[-2].cstringlist, yyvsp[0].cname); ;
     break;}
-case 169:
-#line 644 "cgrammar.y"
+case 190:
+#line 809 "cgrammar.y"
+{ yyval.cstringlist = cstringList_single (yyvsp[0].cname); ;
+    break;}
+case 191:
+#line 813 "cgrammar.y"
+{ yyval.expr = exprNode_offsetof (yyvsp[-5].qtyp, yyvsp[-2].cstringlist); ;
+    break;}
+case 192:
+#line 816 "cgrammar.y"
 { context_setProtectVars (); ;
     break;}
-case 170:
-#line 645 "cgrammar.y"
+case 193:
+#line 817 "cgrammar.y"
 { context_sizeofReleaseVars (); yyval.expr = yyvsp[0].expr; ;
     break;}
-case 171:
-#line 648 "cgrammar.y"
+case 194:
+#line 820 "cgrammar.y"
 { yyval.expr = exprNode_sizeofType (yyvsp[-1].qtyp); ;
     break;}
-case 172:
-#line 649 "cgrammar.y"
+case 195:
+#line 821 "cgrammar.y"
 { yyval.expr = exprNode_sizeofExpr (yyvsp[0].expr); ;
     break;}
-case 174:
-#line 654 "cgrammar.y"
+case 196:
+#line 822 "cgrammar.y"
+{ yyval.expr = exprNode_alignofType (yyvsp[-1].qtyp); ;
+    break;}
+case 197:
+#line 823 "cgrammar.y"
+{ yyval.expr = exprNode_alignofExpr (yyvsp[0].expr); ;
+    break;}
+case 199:
+#line 828 "cgrammar.y"
 { yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ;
     break;}
-case 176:
-#line 658 "cgrammar.y"
+case 201:
+#line 832 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 177:
-#line 659 "cgrammar.y"
+case 202:
+#line 833 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 178:
-#line 660 "cgrammar.y"
+case 203:
+#line 834 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 180:
-#line 664 "cgrammar.y"
+case 205:
+#line 838 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 181:
-#line 665 "cgrammar.y"
+case 206:
+#line 839 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 183:
-#line 669 "cgrammar.y"
+case 208:
+#line 843 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 184:
-#line 670 "cgrammar.y"
+case 209:
+#line 844 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 186:
-#line 674 "cgrammar.y"
+case 211:
+#line 848 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 187:
-#line 675 "cgrammar.y"
+case 212:
+#line 849 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 188:
-#line 676 "cgrammar.y"
+case 213:
+#line 850 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 189:
-#line 677 "cgrammar.y"
+case 214:
+#line 851 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 191:
-#line 681 "cgrammar.y"
+case 216:
+#line 855 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 192:
-#line 682 "cgrammar.y"
+case 217:
+#line 856 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 194:
-#line 686 "cgrammar.y"
+case 219:
+#line 860 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 196:
-#line 690 "cgrammar.y"
+case 221:
+#line 864 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 198:
-#line 695 "cgrammar.y"
+case 223:
+#line 869 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 200:
-#line 700 "cgrammar.y"
+case 225:
+#line 874 "cgrammar.y"
 { exprNode_produceGuards (yyvsp[-1].expr); 
      context_enterAndClause (yyvsp[-1].expr); 
    ;
     break;}
-case 201:
-#line 704 "cgrammar.y"
+case 226:
+#line 878 "cgrammar.y"
 { 
      yyval.expr = exprNode_op (yyvsp[-3].expr, yyvsp[0].expr, yyvsp[-2].tok); 
      context_exitAndClause (yyval.expr, yyvsp[0].expr);
    ;
     break;}
-case 203:
-#line 712 "cgrammar.y"
+case 228:
+#line 886 "cgrammar.y"
 { 
      exprNode_produceGuards (yyvsp[-1].expr);
      context_enterOrClause (yyvsp[-1].expr); 
    ;
     break;}
-case 204:
-#line 717 "cgrammar.y"
+case 229:
+#line 891 "cgrammar.y"
 { 
      yyval.expr = exprNode_op (yyvsp[-3].expr, yyvsp[0].expr, yyvsp[-2].tok); 
      context_exitOrClause (yyval.expr, yyvsp[0].expr);
    ;
     break;}
-case 206:
-#line 724 "cgrammar.y"
+case 231:
+#line 898 "cgrammar.y"
 { exprNode_produceGuards (yyvsp[-1].expr); context_enterTrueClause (yyvsp[-1].expr); ;
     break;}
-case 207:
-#line 725 "cgrammar.y"
+case 232:
+#line 899 "cgrammar.y"
 { context_enterFalseClause (yyvsp[-4].expr); ;
     break;}
-case 208:
-#line 726 "cgrammar.y"
+case 233:
+#line 900 "cgrammar.y"
 { yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); context_exitClause (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ;
     break;}
-case 210:
-#line 730 "cgrammar.y"
+case 235:
+#line 904 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 211:
-#line 731 "cgrammar.y"
+case 236:
+#line 905 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 212:
-#line 732 "cgrammar.y"
+case 237:
+#line 906 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 213:
-#line 733 "cgrammar.y"
+case 238:
+#line 907 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 214:
-#line 734 "cgrammar.y"
+case 239:
+#line 908 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 215:
-#line 735 "cgrammar.y"
+case 240:
+#line 909 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 216:
-#line 736 "cgrammar.y"
+case 241:
+#line 910 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 217:
-#line 737 "cgrammar.y"
+case 242:
+#line 911 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 218:
-#line 738 "cgrammar.y"
+case 243:
+#line 912 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 219:
-#line 739 "cgrammar.y"
+case 244:
+#line 913 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 220:
-#line 740 "cgrammar.y"
+case 245:
+#line 914 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 222:
-#line 744 "cgrammar.y"
+case 247:
+#line 918 "cgrammar.y"
 { yyval.expr = exprNode_comma (yyvsp[-2].expr, yyvsp[0].expr); ;
     break;}
-case 223:
-#line 747 "cgrammar.y"
+case 248:
+#line 921 "cgrammar.y"
 { yyval.expr = exprNode_undefined; ;
     break;}
-case 226:
-#line 756 "cgrammar.y"
+case 251:
+#line 930 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 227:
-#line 757 "cgrammar.y"
+case 252:
+#line 931 "cgrammar.y"
 { doVaDcl (); yyval.expr = exprNode_makeError (); ;
     break;}
-case 228:
-#line 758 "cgrammar.y"
+case 253:
+#line 932 "cgrammar.y"
 { yyval.expr = exprNode_makeError (); ;
     break;}
-case 229:
-#line 761 "cgrammar.y"
+case 254:
+#line 936 "cgrammar.y"
 { yyval.expr = exprNode_makeError (); ;
     break;}
-case 230:
-#line 775 "cgrammar.y"
+case 255:
+#line 950 "cgrammar.y"
 {
-               setProcessingVars (yyvsp[-3].qtyp); 
-     processNamedDecl (yyvsp[-1].ntyp); ;
+     setProcessingVars (yyvsp[-3].qtyp); 
+     processNamedDecl (yyvsp[-1].ntyp); 
+   ;
     break;}
-case 231:
-#line 778 "cgrammar.y"
-{ unsetProcessingVars (); yyval.expr = yyvsp[-2].expr; ;
+case 256:
+#line 955 "cgrammar.y"
+{ 
+     unsetProcessingVars (); 
+     yyval.expr = exprNode_makeEmptyInitialization (yyvsp[-6].ntyp); 
+     DPRINTF (("Empty initialization: %s", exprNode_unparse (yyval.expr)));
+   ;
     break;}
-case 232:
-#line 780 "cgrammar.y"
-{ setProcessingVars (yyvsp[-4].qtyp); processNamedDecl (yyvsp[-2].ntyp); 
-        ;
+case 257:
+#line 961 "cgrammar.y"
+{ setProcessingVars (yyvsp[-4].qtyp); processNamedDecl (yyvsp[-2].ntyp); ;
     break;}
-case 233:
-#line 783 "cgrammar.y"
+case 258:
+#line 963 "cgrammar.y"
 { yyval.expr = exprNode_concat (yyvsp[-2].expr, exprNode_makeInitialization (yyvsp[-8].ntyp, yyvsp[-3].expr)); 
      unsetProcessingVars ();
    ;
     break;}
-case 234:
-#line 787 "cgrammar.y"
-{ processNamedDecl (yyvsp[-1].ntyp); yyval.expr = exprNode_makeError (); ;
+case 259:
+#line 969 "cgrammar.y"
+{ 
+     processNamedDecl (yyvsp[-1].ntyp); 
+     yyval.expr = exprNode_makeEmptyInitialization (yyvsp[-1].ntyp);
+   ;
     break;}
-case 235:
-#line 788 "cgrammar.y"
+case 260:
+#line 973 "cgrammar.y"
 { processNamedDecl (yyvsp[-2].ntyp); ;
     break;}
-case 236:
-#line 789 "cgrammar.y"
+case 261:
+#line 974 "cgrammar.y"
 { yyval.expr = exprNode_makeInitialization (yyvsp[-5].ntyp, yyvsp[0].expr); ;
     break;}
-case 237:
-#line 793 "cgrammar.y"
+case 262:
+#line 977 "cgrammar.y"
 { setProcessingTypedef (yyvsp[0].qtyp); ;
     break;}
-case 238:
-#line 794 "cgrammar.y"
-{ unsetProcessingTypedef (); ;
+case 263:
+#line 979 "cgrammar.y"
+{ clabstract_declareType (yyvsp[-3].exprlist, yyvsp[-1].warnclause); ;
     break;}
-case 239:
-#line 795 "cgrammar.y"
+case 264:
+#line 980 "cgrammar.y"
 { /* in the ANSI grammar, semantics unclear */ ;
     break;}
-case 240:
-#line 796 "cgrammar.y"
+case 265:
+#line 981 "cgrammar.y"
 { /* in the ANSI grammar, semantics unclear */ ;
     break;}
-case 241:
-#line 799 "cgrammar.y"
+case 266:
+#line 984 "cgrammar.y"
 { g_expectingTypeName = TRUE; ;
     break;}
-case 242:
-#line 802 "cgrammar.y"
+case 267:
+#line 987 "cgrammar.y"
 { g_expectingTypeName = TRUE; context_pushLoc (); ;
     break;}
-case 243:
-#line 805 "cgrammar.y"
-{ ; ;
+case 268:
+#line 990 "cgrammar.y"
+{ yyval.exprlist = yyvsp[-1].exprlist; ;
     break;}
-case 244:
-#line 808 "cgrammar.y"
-{ ; ;
+case 269:
+#line 993 "cgrammar.y"
+{ yyval.exprlist = exprNodeList_singleton (yyvsp[0].expr); ;
     break;}
-case 245:
-#line 809 "cgrammar.y"
-{ ; ;
+case 270:
+#line 994 "cgrammar.y"
+{ yyval.exprlist = exprNodeList_push (yyvsp[-3].exprlist, yyvsp[0].expr); ;
     break;}
-case 246:
-#line 812 "cgrammar.y"
+case 271:
+#line 997 "cgrammar.y"
 { yyval.expr = exprNode_makeError (); ;
     break;}
-case 247:
-#line 813 "cgrammar.y"
+case 272:
+#line 998 "cgrammar.y"
 { yyval.expr = exprNode_concat (yyvsp[-3].expr, yyvsp[0].expr); ;
     break;}
-case 249:
-#line 817 "cgrammar.y"
-{ yyval.expr = exprNode_makeInitBlock (yyvsp[-2].tok, yyvsp[-1].alist); ;
+case 274:
+#line 1002 "cgrammar.y"
+{ yyval.expr = exprNode_makeInitBlock (yyvsp[-2].tok, yyvsp[-1].exprlist); ;
     break;}
-case 250:
-#line 818 "cgrammar.y"
-{ yyval.expr = exprNode_makeInitBlock (yyvsp[-3].tok, yyvsp[-2].alist); ;
+case 275:
+#line 1003 "cgrammar.y"
+{ yyval.expr = exprNode_makeInitBlock (yyvsp[-3].tok, yyvsp[-2].exprlist); ;
     break;}
-case 251:
-#line 823 "cgrammar.y"
-{ yyval.alist = exprNodeList_singleton (yyvsp[0].expr); ;
+case 276:
+#line 1008 "cgrammar.y"
+{ yyval.exprlist = exprNodeList_singleton (yyvsp[0].expr); ;
     break;}
-case 252:
-#line 825 "cgrammar.y"
-{ yyval.alist = exprNodeList_push (yyvsp[-2].alist, yyvsp[0].expr); ;
+case 277:
+#line 1010 "cgrammar.y"
+{ yyval.exprlist = exprNodeList_push (yyvsp[-2].exprlist, yyvsp[0].expr); ;
     break;}
-case 253:
-#line 833 "cgrammar.y"
+case 278:
+#line 1018 "cgrammar.y"
 { setStorageClass (SCEXTERN); yyval.typequal = qual_createExtern (); ;
     break;}
-case 254:
-#line 834 "cgrammar.y"
+case 279:
+#line 1019 "cgrammar.y"
 { yyval.typequal = qual_createInline (); ;
     break;}
-case 255:
-#line 835 "cgrammar.y"
+case 280:
+#line 1020 "cgrammar.y"
 { setStorageClass (SCSTATIC); yyval.typequal = qual_createStatic (); ;
     break;}
-case 256:
-#line 836 "cgrammar.y"
+case 281:
+#line 1021 "cgrammar.y"
 { yyval.typequal = qual_createAuto (); ;
     break;}
-case 257:
-#line 837 "cgrammar.y"
+case 282:
+#line 1022 "cgrammar.y"
 { yyval.typequal = qual_createRegister (); ;
     break;}
-case 258:
-#line 840 "cgrammar.y"
-{ yyval.typequal = qual_createConst (); ;
+case 283:
+#line 1025 "cgrammar.y"
+{ yyval.typequal = qual_createNullTerminated (); ;
     break;}
-case 259:
-#line 841 "cgrammar.y"
-{ yyval.typequal = qual_createVolatile (); ;
+case 284:
+#line 1028 "cgrammar.y"
+{ yyval.stateclause = yyvsp[-1].stateclause; ;
     break;}
-case 260:
-#line 842 "cgrammar.y"
-{ yyval.typequal = qual_createOut (); ;
+case 285:
+#line 1032 "cgrammar.y"
+{
+     context_setProtectVars (); 
+     enterParamsTemp (); 
+     sRef_setGlobalScopeSafe (); 
+   ;
     break;}
-case 261:
-#line 843 "cgrammar.y"
-{ yyval.typequal = qual_createIn (); ;
+case 286:
+#line 1038 "cgrammar.y"
+{ 
+     exitParamsTemp ();
+     sRef_clearGlobalScopeSafe (); 
+     context_releaseVars ();
+     yyval.stateclause = stateClause_createPlain (yyvsp[-5].tok, yyvsp[-2].srset);
+   ;
     break;}
-case 262:
-#line 844 "cgrammar.y"
-{ yyval.typequal = qual_createPartial (); ;
+case 287:
+#line 1046 "cgrammar.y"
+{ yyval.funcclause = yyvsp[-1].funcclause; ;
     break;}
-case 263:
-#line 845 "cgrammar.y"
-{ yyval.typequal = qual_createSpecial (); ;
+case 288:
+#line 1049 "cgrammar.y"
+{ yyval.tok = yyvsp[-1].tok; context_enterFunctionHeader (); ;
     break;}
-case 264:
-#line 846 "cgrammar.y"
+case 289:
+#line 1053 "cgrammar.y"
+{
+     context_exitFunctionHeader ();
+     context_setProtectVars (); 
+     enterParamsTemp (); 
+     sRef_setGlobalScopeSafe (); 
+   ;
+    break;}
+case 290:
+#line 1060 "cgrammar.y"
+{ 
+     exitParamsTemp ();
+     sRef_clearGlobalScopeSafe (); 
+     context_releaseVars ();
+     yyval.funcclause = functionClause_createState (stateClause_create (yyvsp[-5].tok, yyvsp[-4].typequal, yyvsp[-2].srset));
+   ;
+    break;}
+case 291:
+#line 1067 "cgrammar.y"
+{
+     context_setProtectVars (); 
+     enterParamsTemp (); 
+     sRef_setGlobalScopeSafe (); 
+   ;
+    break;}
+case 292:
+#line 1073 "cgrammar.y"
+{
+     context_exitFunctionHeader ();
+     exitParamsTemp ();
+     sRef_clearGlobalScopeSafe (); 
+     context_releaseVars ();
+     DPRINTF (("done optGlobBufConstraintsAux\n"));
+
+     if (lltok_isEnsures (yyvsp[-4].tok)) 
+       {
+        yyval.funcclause = functionClause_createEnsures (yyvsp[-2].fcnconstraint);
+       }
+     else if (lltok_isRequires (yyvsp[-4].tok))
+       {
+        yyval.funcclause = functionClause_createRequires (yyvsp[-2].fcnconstraint);
+       }
+     else
+       {
+        BADBRANCH;
+       }
+
+     DPRINTF (("FunctionclauseS: %s", functionClause_unparse (yyval.funcclause)));
+   ;
+    break;}
+case 293:
+#line 1097 "cgrammar.y"
+{ yyval.fcnconstraint = functionConstraint_createBufferConstraint (yyvsp[0].conL); ;
+    break;}
+case 294:
+#line 1098 "cgrammar.y"
+{ yyval.fcnconstraint = functionConstraint_createMetaStateConstraint (yyvsp[0].msconstraint); DPRINTF (("Made constraint: %s", functionConstraint_unparse (yyval.fcnconstraint))); ;
+    break;}
+case 295:
+#line 1101 "cgrammar.y"
+{ yyval.typequal = qual_createExits (); ;
+    break;}
+case 296:
+#line 1102 "cgrammar.y"
+{ yyval.typequal = qual_createMayExit (); ;
+    break;}
+case 297:
+#line 1103 "cgrammar.y"
+{ yyval.typequal = qual_createTrueExit (); ;
+    break;}
+case 298:
+#line 1104 "cgrammar.y"
+{ yyval.typequal = qual_createFalseExit (); ;
+    break;}
+case 299:
+#line 1105 "cgrammar.y"
+{ yyval.typequal = qual_createNeverExit (); ;
+    break;}
+case 300:
+#line 1108 "cgrammar.y"
+{ yyval.typequal = qual_createChecked (); ;
+    break;}
+case 301:
+#line 1109 "cgrammar.y"
+{ yyval.typequal = qual_createCheckMod (); ;
+    break;}
+case 302:
+#line 1110 "cgrammar.y"
+{ yyval.typequal = qual_createUnchecked (); ;
+    break;}
+case 303:
+#line 1111 "cgrammar.y"
+{ yyval.typequal = qual_createCheckedStrict (); ;
+    break;}
+case 304:
+#line 1114 "cgrammar.y"
 { yyval.typequal = qual_createOwned (); ;
     break;}
-case 265:
-#line 847 "cgrammar.y"
+case 305:
+#line 1115 "cgrammar.y"
 { yyval.typequal = qual_createDependent (); ;
     break;}
-case 266:
-#line 848 "cgrammar.y"
+case 306:
+#line 1116 "cgrammar.y"
 { yyval.typequal = qual_createYield (); ;
     break;}
-case 267:
-#line 849 "cgrammar.y"
+case 307:
+#line 1117 "cgrammar.y"
 { yyval.typequal = qual_createTemp (); ;
     break;}
-case 268:
-#line 850 "cgrammar.y"
+case 308:
+#line 1118 "cgrammar.y"
 { yyval.typequal = qual_createOnly (); ;
     break;}
-case 269:
-#line 851 "cgrammar.y"
+case 309:
+#line 1119 "cgrammar.y"
 { yyval.typequal = qual_createKeep (); ;
     break;}
-case 270:
-#line 852 "cgrammar.y"
+case 310:
+#line 1120 "cgrammar.y"
 { yyval.typequal = qual_createKept (); ;
     break;}
-case 271:
-#line 853 "cgrammar.y"
+case 311:
+#line 1121 "cgrammar.y"
 { yyval.typequal = qual_createShared (); ;
     break;}
-case 272:
-#line 854 "cgrammar.y"
+case 312:
+#line 1122 "cgrammar.y"
 { yyval.typequal = qual_createUnique (); ;
     break;}
-case 273:
-#line 855 "cgrammar.y"
-{ yyval.typequal = qual_createExits (); ;
-    break;}
-case 274:
-#line 856 "cgrammar.y"
-{ yyval.typequal = qual_createMayExit (); ;
-    break;}
-case 275:
-#line 857 "cgrammar.y"
-{ yyval.typequal = qual_createTrueExit (); ;
-    break;}
-case 276:
-#line 858 "cgrammar.y"
-{ yyval.typequal = qual_createFalseExit (); ;
-    break;}
-case 277:
-#line 859 "cgrammar.y"
-{ yyval.typequal = qual_createNeverExit (); ;
-    break;}
-case 278:
-#line 860 "cgrammar.y"
+case 313:
+#line 1123 "cgrammar.y"
 { yyval.typequal = qual_createNull (); ;
     break;}
-case 279:
-#line 861 "cgrammar.y"
+case 314:
+#line 1124 "cgrammar.y"
+{ yyval.typequal = qual_createIsNull (); ;
+    break;}
+case 315:
+#line 1125 "cgrammar.y"
 { yyval.typequal = qual_createRelNull (); ;
     break;}
-case 280:
-#line 862 "cgrammar.y"
-{ yyval.typequal = qual_createReturned (); ;
+case 316:
+#line 1126 "cgrammar.y"
+{ yyval.typequal = qual_createNotNull (); ;
     break;}
-case 281:
-#line 863 "cgrammar.y"
+case 317:
+#line 1127 "cgrammar.y"
 { yyval.typequal = qual_createExposed (); ;
     break;}
-case 282:
-#line 864 "cgrammar.y"
+case 318:
+#line 1128 "cgrammar.y"
 { yyval.typequal = qual_createObserver (); ;
     break;}
-case 283:
-#line 865 "cgrammar.y"
-{ yyval.typequal = qual_createChecked (); ;
-    break;}
-case 284:
-#line 866 "cgrammar.y"
-{ yyval.typequal = qual_createCheckMod (); ;
+case 319:
+#line 1129 "cgrammar.y"
+{ yyval.typequal = qual_createNullTerminated (); ;
     break;}
-case 285:
-#line 867 "cgrammar.y"
-{ yyval.typequal = qual_createUnchecked (); ;
-    break;}
-case 286:
-#line 868 "cgrammar.y"
-{ yyval.typequal = qual_createCheckedStrict (); ;
+case 320:
+#line 1130 "cgrammar.y"
+{ yyval.typequal = qual_createMetaState (yyvsp[0].annotation); ;
     break;}
-case 287:
-#line 869 "cgrammar.y"
-{ yyval.typequal = qual_createTrueNull (); ;
+case 321:
+#line 1134 "cgrammar.y"
+{ yyval.typequal = qual_createReturned (); ;
     break;}
-case 288:
-#line 870 "cgrammar.y"
-{ yyval.typequal = qual_createFalseNull (); ;
+case 322:
+#line 1135 "cgrammar.y"
+{ yyval.typequal = qual_createSef (); ;
     break;}
-case 289:
-#line 871 "cgrammar.y"
+case 323:
+#line 1138 "cgrammar.y"
 { yyval.typequal = qual_createUnused (); ;
     break;}
-case 290:
-#line 872 "cgrammar.y"
+case 324:
+#line 1139 "cgrammar.y"
 { yyval.typequal = qual_createExternal (); ;
     break;}
-case 291:
-#line 873 "cgrammar.y"
-{ yyval.typequal = qual_createSef (); ;
+case 325:
+#line 1142 "cgrammar.y"
+{ yyval.typequal = qual_createTrueNull (); ;
     break;}
-case 292:
-#line 874 "cgrammar.y"
+case 326:
+#line 1143 "cgrammar.y"
+{ yyval.typequal = qual_createFalseNull (); ;
+    break;}
+case 327:
+#line 1146 "cgrammar.y"
 { yyval.typequal = qual_createAbstract (); ;
     break;}
-case 293:
-#line 875 "cgrammar.y"
+case 328:
+#line 1147 "cgrammar.y"
 { yyval.typequal = qual_createConcrete (); ;
     break;}
-case 294:
-#line 876 "cgrammar.y"
+case 329:
+#line 1148 "cgrammar.y"
 { yyval.typequal = qual_createMutable (); ;
     break;}
-case 295:
-#line 877 "cgrammar.y"
+case 330:
+#line 1149 "cgrammar.y"
 { yyval.typequal = qual_createImmutable (); ;
     break;}
-case 296:
-#line 878 "cgrammar.y"
-{ yyval.typequal = qual_createNotNull (); ;
-    break;}
-case 297:
-#line 879 "cgrammar.y"
+case 331:
+#line 1152 "cgrammar.y"
 { yyval.typequal = qual_createRefCounted (); ;
     break;}
-case 298:
-#line 880 "cgrammar.y"
+case 332:
+#line 1153 "cgrammar.y"
 { yyval.typequal = qual_createRefs (); ;
     break;}
-case 299:
-#line 881 "cgrammar.y"
+case 333:
+#line 1154 "cgrammar.y"
 { yyval.typequal = qual_createKillRef (); ;
     break;}
-case 300:
-#line 882 "cgrammar.y"
+case 334:
+#line 1155 "cgrammar.y"
 { yyval.typequal = qual_createRelDef (); ;
     break;}
-case 301:
-#line 883 "cgrammar.y"
+case 335:
+#line 1156 "cgrammar.y"
 { yyval.typequal = qual_createNewRef (); ;
     break;}
-case 302:
-#line 884 "cgrammar.y"
+case 336:
+#line 1157 "cgrammar.y"
 { yyval.typequal = qual_createTempRef (); ;
     break;}
-case 303:
-#line 887 "cgrammar.y"
+case 337:
+#line 1160 "cgrammar.y"
 { yyval.typequal = qual_createShort (); ;
     break;}
-case 304:
-#line 888 "cgrammar.y"
+case 338:
+#line 1161 "cgrammar.y"
 { yyval.typequal = qual_createLong (); ;
     break;}
-case 305:
-#line 889 "cgrammar.y"
+case 339:
+#line 1162 "cgrammar.y"
 { yyval.typequal = qual_createSigned (); ;
     break;}
-case 306:
-#line 890 "cgrammar.y"
+case 340:
+#line 1163 "cgrammar.y"
 { yyval.typequal = qual_createUnsigned (); ;
     break;}
-case 313:
-#line 899 "cgrammar.y"
+case 341:
+#line 1166 "cgrammar.y"
+{ yyval.typequal = qual_createOut (); ;
+    break;}
+case 342:
+#line 1167 "cgrammar.y"
+{ yyval.typequal = qual_createIn (); ;
+    break;}
+case 343:
+#line 1168 "cgrammar.y"
+{ yyval.typequal = qual_createPartial (); ;
+    break;}
+case 344:
+#line 1169 "cgrammar.y"
+{ yyval.typequal = qual_createSpecial (); ;
+    break;}
+case 345:
+#line 1172 "cgrammar.y"
+{ yyval.typequal = qual_createConst (); ;
+    break;}
+case 346:
+#line 1173 "cgrammar.y"
+{ yyval.typequal = qual_createVolatile (); ;
+    break;}
+case 347:
+#line 1174 "cgrammar.y"
+{ yyval.typequal = yyvsp[-1].typequal; ;
+    break;}
+case 348:
+#line 1175 "cgrammar.y"
+{ yyval.typequal = yyvsp[-1].typequal; ;
+    break;}
+case 349:
+#line 1176 "cgrammar.y"
+{ yyval.typequal = yyvsp[-1].typequal; ;
+    break;}
+case 350:
+#line 1177 "cgrammar.y"
+{ yyval.typequal = yyvsp[-1].typequal; ;
+    break;}
+case 351:
+#line 1178 "cgrammar.y"
+{ yyval.typequal = yyvsp[-1].typequal; ;
+    break;}
+case 352:
+#line 1179 "cgrammar.y"
+{ yyval.typequal = yyvsp[-1].typequal; ;
+    break;}
+case 353:
+#line 1180 "cgrammar.y"
+{ yyval.typequal = yyvsp[-1].typequal; ;
+    break;}
+case 354:
+#line 1181 "cgrammar.y"
+{ yyval.typequal = yyvsp[-1].typequal; ;
+    break;}
+case 355:
+#line 1182 "cgrammar.y"
+{ yyval.typequal = yyvsp[-1].typequal; ;
+    break;}
+case 362:
+#line 1195 "cgrammar.y"
 { yyval.ctyp = ctype_unknown; ;
     break;}
-case 314:
-#line 900 "cgrammar.y"
+case 363:
+#line 1196 "cgrammar.y"
 { yyval.ctyp = ctype_anyintegral; ;
     break;}
-case 315:
-#line 901 "cgrammar.y"
+case 364:
+#line 1197 "cgrammar.y"
 { yyval.ctyp = ctype_unsignedintegral; ;
     break;}
-case 316:
-#line 902 "cgrammar.y"
+case 365:
+#line 1198 "cgrammar.y"
 { yyval.ctyp = ctype_signedintegral; ;
     break;}
-case 320:
-#line 906 "cgrammar.y"
+case 369:
+#line 1202 "cgrammar.y"
 { yyval.ctyp = ctype_fromQual (yyvsp[-1].typequal); ;
     break;}
-case 321:
-#line 910 "cgrammar.y"
+case 370:
+#line 1206 "cgrammar.y"
 { yyval.qtyp = qtype_resolve (yyvsp[-1].qtyp); ;
     break;}
-case 322:
-#line 913 "cgrammar.y"
+case 371:
+#line 1209 "cgrammar.y"
 { yyval.qtyp = yyvsp[0].qtyp; ;
     break;}
-case 323:
-#line 915 "cgrammar.y"
+case 372:
+#line 1211 "cgrammar.y"
 { yyval.qtyp = qtype_mergeAlt (yyvsp[-3].qtyp, yyvsp[-1].qtyp); ;
     break;}
-case 325:
-#line 920 "cgrammar.y"
+case 374:
+#line 1216 "cgrammar.y"
 { yyval.qtyp = qtype_mergeAlt (yyvsp[-2].qtyp, yyvsp[0].qtyp); ;
     break;}
-case 326:
-#line 923 "cgrammar.y"
+case 375:
+#line 1219 "cgrammar.y"
 { yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ;
     break;}
-case 327:
-#line 924 "cgrammar.y"
+case 376:
+#line 1220 "cgrammar.y"
 { yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ;
     break;}
-case 328:
-#line 925 "cgrammar.y"
+case 377:
+#line 1221 "cgrammar.y"
 { yyval.qtyp = qtype_combine (yyvsp[0].qtyp, yyvsp[-1].ctyp); ;
     break;}
-case 329:
-#line 928 "cgrammar.y"
+case 378:
+#line 1224 "cgrammar.y"
 { yyval.qtyp = qtype_unknown (); ;
     break;}
-case 330:
-#line 929 "cgrammar.y"
+case 379:
+#line 1225 "cgrammar.y"
 { yyval.qtyp = yyvsp[0].qtyp; ;
     break;}
-case 331:
-#line 932 "cgrammar.y"
+case 380:
+#line 1228 "cgrammar.y"
 { sRef_setGlobalScopeSafe (); ;
     break;}
-case 332:
-#line 934 "cgrammar.y"
+case 381:
+#line 1230 "cgrammar.y"
 { sRef_clearGlobalScopeSafe (); ;
     break;}
-case 333:
-#line 936 "cgrammar.y"
+case 382:
+#line 1232 "cgrammar.y"
 { yyval.ctyp = declareStruct (yyvsp[-8].cname, yyvsp[-3].flist); ;
     break;}
-case 334:
-#line 937 "cgrammar.y"
+case 383:
+#line 1233 "cgrammar.y"
 { sRef_setGlobalScopeSafe (); ;
     break;}
-case 335:
-#line 939 "cgrammar.y"
+case 384:
+#line 1235 "cgrammar.y"
 { sRef_clearGlobalScopeSafe (); ;
     break;}
-case 336:
-#line 941 "cgrammar.y"
+case 385:
+#line 1237 "cgrammar.y"
 { yyval.ctyp = declareUnion (yyvsp[-8].cname, yyvsp[-3].flist); ;
     break;}
-case 337:
-#line 943 "cgrammar.y"
+case 386:
+#line 1239 "cgrammar.y"
 { yyval.ctyp = declareStruct (yyvsp[-3].cname, uentryList_new ()); ;
     break;}
-case 338:
-#line 945 "cgrammar.y"
+case 387:
+#line 1241 "cgrammar.y"
 { yyval.ctyp = declareUnion (yyvsp[-3].cname, uentryList_new ()); ;
     break;}
-case 339:
-#line 946 "cgrammar.y"
+case 388:
+#line 1242 "cgrammar.y"
 { sRef_setGlobalScopeSafe (); ;
     break;}
-case 340:
-#line 948 "cgrammar.y"
+case 389:
+#line 1244 "cgrammar.y"
 { sRef_clearGlobalScopeSafe (); ;
     break;}
-case 341:
-#line 950 "cgrammar.y"
+case 390:
+#line 1246 "cgrammar.y"
 { yyval.ctyp = declareUnnamedStruct (yyvsp[-3].flist); ;
     break;}
-case 342:
-#line 951 "cgrammar.y"
+case 391:
+#line 1247 "cgrammar.y"
 { sRef_setGlobalScopeSafe (); ;
     break;}
-case 343:
-#line 953 "cgrammar.y"
+case 392:
+#line 1249 "cgrammar.y"
 { sRef_clearGlobalScopeSafe (); ;
     break;}
-case 344:
-#line 955 "cgrammar.y"
+case 393:
+#line 1251 "cgrammar.y"
 { yyval.ctyp = declareUnnamedUnion (yyvsp[-3].flist); ;
     break;}
-case 345:
-#line 957 "cgrammar.y"
+case 394:
+#line 1253 "cgrammar.y"
 { yyval.ctyp = ctype_createUnnamedStruct (uentryList_new ()); ;
     break;}
-case 346:
-#line 959 "cgrammar.y"
+case 395:
+#line 1255 "cgrammar.y"
 { yyval.ctyp = ctype_createUnnamedUnion (uentryList_new ()); ;
     break;}
-case 347:
-#line 960 "cgrammar.y"
+case 396:
+#line 1256 "cgrammar.y"
 { yyval.ctyp = handleStruct (yyvsp[-1].cname); ;
     break;}
-case 348:
-#line 961 "cgrammar.y"
+case 397:
+#line 1257 "cgrammar.y"
 { yyval.ctyp = handleUnion (yyvsp[-1].cname); ;
     break;}
-case 349:
-#line 964 "cgrammar.y"
+case 398:
+#line 1260 "cgrammar.y"
 { g_expectingTypeName = FALSE; ;
     break;}
-case 351:
-#line 968 "cgrammar.y"
+case 400:
+#line 1264 "cgrammar.y"
 { yyval.flist = uentryList_undefined; /* bogus! */ ;
     break;}
-case 352:
-#line 969 "cgrammar.y"
+case 401:
+#line 1265 "cgrammar.y"
 { yyval.flist = uentryList_mergeFields (yyvsp[-1].flist, yyvsp[0].flist); ;
     break;}
-case 353:
-#line 973 "cgrammar.y"
+case 402:
+#line 1269 "cgrammar.y"
 { yyval.flist = fixUentryList (yyvsp[-2].ntyplist, yyvsp[-4].qtyp); ;
     break;}
-case 354:
-#line 975 "cgrammar.y"
+case 403:
+#line 1271 "cgrammar.y"
 { yyval.flist = fixUnnamedDecl (yyvsp[-2].qtyp); ;
     break;}
-case 355:
-#line 979 "cgrammar.y"
+case 404:
+#line 1275 "cgrammar.y"
 { yyval.ntyplist = idDeclList_singleton (yyvsp[-1].ntyp); ;
     break;}
-case 356:
-#line 981 "cgrammar.y"
+case 405:
+#line 1277 "cgrammar.y"
 { yyval.ntyplist = idDeclList_add (yyvsp[-3].ntyplist, yyvsp[-1].ntyp); ;
     break;}
-case 357:
-#line 984 "cgrammar.y"
+case 406:
+#line 1280 "cgrammar.y"
 { yyval.ntyp = yyvsp[0].ntyp; ;
     break;}
-case 358:
-#line 985 "cgrammar.y"
+case 407:
+#line 1281 "cgrammar.y"
 { yyval.ntyp = idDecl_undefined; ;
     break;}
-case 359:
-#line 986 "cgrammar.y"
-{ yyval.ntyp = yyvsp[-2].ntyp; ;
+case 408:
+#line 1282 "cgrammar.y"
+{ yyval.ntyp = yyvsp[-3].ntyp; ;
     break;}
-case 360:
-#line 990 "cgrammar.y"
+case 409:
+#line 1287 "cgrammar.y"
 { yyval.ctyp = declareUnnamedEnum (yyvsp[-2].enumnamelist); ;
     break;}
-case 361:
-#line 991 "cgrammar.y"
+case 410:
+#line 1288 "cgrammar.y"
 { context_pushLoc (); ;
     break;}
-case 362:
-#line 992 "cgrammar.y"
+case 411:
+#line 1289 "cgrammar.y"
 { context_popLoc (); yyval.ctyp = declareEnum (yyvsp[-5].cname, yyvsp[-2].enumnamelist); ;
     break;}
-case 363:
-#line 993 "cgrammar.y"
+case 412:
+#line 1290 "cgrammar.y"
 { yyval.ctyp = handleEnum (yyvsp[-1].cname); ;
     break;}
-case 364:
-#line 997 "cgrammar.y"
+case 413:
+#line 1294 "cgrammar.y"
 { yyval.enumnamelist = enumNameList_single (yyvsp[0].cname); ;
     break;}
-case 365:
-#line 999 "cgrammar.y"
+case 414:
+#line 1296 "cgrammar.y"
 { yyval.enumnamelist = enumNameList_push (yyvsp[-2].enumnamelist, yyvsp[0].cname); ;
     break;}
-case 367:
-#line 1004 "cgrammar.y"
+case 416:
+#line 1301 "cgrammar.y"
 { uentry ue = uentry_makeEnumConstant (yyvsp[0].cname, ctype_unknown);
      usymtab_supGlobalEntry (ue);
      yyval.cname = yyvsp[0].cname;
    ;
     break;}
-case 368:
-#line 1009 "cgrammar.y"
-{ uentry ue = uentry_makeEnumConstant (yyvsp[-3].cname, ctype_unknown);
+case 417:
+#line 1306 "cgrammar.y"
+{ uentry ue = uentry_makeEnumInitializedConstant (yyvsp[-3].cname, ctype_unknown, yyvsp[0].expr);
      usymtab_supGlobalEntry (ue);
      yyval.cname = yyvsp[-3].cname; 
    ;
     break;}
-case 370:
-#line 1016 "cgrammar.y"
+case 419:
+#line 1313 "cgrammar.y"
 { yyval.ntyp = idDecl_create (cstring_undefined, qtype_create (yyvsp[0].ctyp)); ;
     break;}
-case 371:
-#line 1018 "cgrammar.y"
+case 420:
+#line 1315 "cgrammar.y"
 { 
      qtype qt = qtype_unknown ();
 
@@ -4344,92 +4796,92 @@ case 371:
      yyval.ntyp = idDecl_create (cstring_copy (LastIdentifier ()), qt);
    ;
     break;}
-case 372:
-#line 1025 "cgrammar.y"
+case 421:
+#line 1322 "cgrammar.y"
 { yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ;
     break;}
-case 374:
-#line 1030 "cgrammar.y"
+case 423:
+#line 1327 "cgrammar.y"
 { yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ;
     break;}
-case 375:
-#line 1033 "cgrammar.y"
+case 424:
+#line 1330 "cgrammar.y"
 { yyval.entrylist = handleParamTypeList (yyvsp[0].entrylist); ;
     break;}
-case 376:
-#line 1034 "cgrammar.y"
+case 425:
+#line 1331 "cgrammar.y"
 { yyval.entrylist = handleParamIdList (yyvsp[0].entrylist); ;
     break;}
-case 377:
-#line 1037 "cgrammar.y"
+case 426:
+#line 1334 "cgrammar.y"
 { /* ignored for now */; ;
     break;}
-case 378:
-#line 1038 "cgrammar.y"
+case 427:
+#line 1335 "cgrammar.y"
 { ; ;
     break;}
-case 379:
-#line 1041 "cgrammar.y"
+case 428:
+#line 1338 "cgrammar.y"
 { ; ;
     break;}
-case 380:
-#line 1042 "cgrammar.y"
+case 429:
+#line 1339 "cgrammar.y"
 { ; ;
     break;}
-case 381:
-#line 1045 "cgrammar.y"
+case 430:
+#line 1342 "cgrammar.y"
 { yyval.count = 1; ;
     break;}
-case 382:
-#line 1046 "cgrammar.y"
+case 431:
+#line 1343 "cgrammar.y"
 { yyval.count = 1; ;
     break;}
-case 383:
-#line 1047 "cgrammar.y"
+case 432:
+#line 1344 "cgrammar.y"
 { yyval.count = 1 + yyvsp[0].count; ;
     break;}
-case 384:
-#line 1048 "cgrammar.y"
+case 433:
+#line 1345 "cgrammar.y"
 { yyval.count = 1 + yyvsp[0].count; ;
     break;}
-case 386:
-#line 1052 "cgrammar.y"
+case 435:
+#line 1349 "cgrammar.y"
 { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeElipsisMarker ()); ;
     break;}
-case 387:
-#line 1055 "cgrammar.y"
+case 436:
+#line 1352 "cgrammar.y"
 { yyval.entrylist = uentryList_single (uentry_makeVariableLoc (yyvsp[0].cname, ctype_int)); ;
     break;}
-case 388:
-#line 1056 "cgrammar.y"
+case 437:
+#line 1353 "cgrammar.y"
 { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeVariableLoc (yyvsp[0].cname, ctype_int)); ;
     break;}
-case 389:
-#line 1059 "cgrammar.y"
+case 438:
+#line 1356 "cgrammar.y"
 { yyval.entrylist = uentryList_single (uentry_makeElipsisMarker ()); ;
     break;}
-case 391:
-#line 1061 "cgrammar.y"
+case 440:
+#line 1358 "cgrammar.y"
 { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeElipsisMarker ()); ;
     break;}
-case 392:
-#line 1064 "cgrammar.y"
+case 441:
+#line 1361 "cgrammar.y"
 { storeLoc (); ;
     break;}
-case 393:
-#line 1064 "cgrammar.y"
+case 442:
+#line 1361 "cgrammar.y"
 { yyval.entrylist = uentryList_single (yyvsp[0].oentry); ;
     break;}
-case 394:
-#line 1065 "cgrammar.y"
+case 443:
+#line 1362 "cgrammar.y"
 { storeLoc (); ;
     break;}
-case 395:
-#line 1066 "cgrammar.y"
+case 444:
+#line 1363 "cgrammar.y"
 { yyval.entrylist = uentryList_add (yyvsp[-3].entrylist, yyvsp[0].oentry); ;
     break;}
-case 396:
-#line 1070 "cgrammar.y"
+case 445:
+#line 1367 "cgrammar.y"
 { 
      if (isFlipOldStyle ()) 
        { 
@@ -4442,8 +4894,8 @@ case 396:
      yyval.oentry = makeCurrentParam (idDecl_fixParamBase (yyvsp[-1].ntyp, yyvsp[-2].qtyp)); 
    ;
     break;}
-case 397:
-#line 1082 "cgrammar.y"
+case 446:
+#line 1379 "cgrammar.y"
 { 
      idDecl tparam = idDecl_create (yyvsp[0].cname, qtype_unknown ());
 
@@ -4458,383 +4910,383 @@ case 397:
      idDecl_free (tparam);
    ;
     break;}
-case 399:
-#line 1098 "cgrammar.y"
+case 448:
+#line 1395 "cgrammar.y"
 { yyval.qtyp = qtype_newBase (yyvsp[-1].qtyp, yyvsp[0].ctyp); ;
     break;}
-case 400:
-#line 1101 "cgrammar.y"
+case 449:
+#line 1398 "cgrammar.y"
 { yyval.ctyp = ctype_adjustPointers (yyvsp[0].count, ctype_unknown); ;
     break;}
-case 402:
-#line 1103 "cgrammar.y"
+case 451:
+#line 1400 "cgrammar.y"
 { yyval.ctyp = ctype_adjustPointers (yyvsp[-1].count, yyvsp[0].ctyp); ;
     break;}
-case 403:
-#line 1106 "cgrammar.y"
+case 452:
+#line 1403 "cgrammar.y"
 { yyval.ctyp = ctype_unknown; ;
     break;}
-case 405:
-#line 1111 "cgrammar.y"
+case 454:
+#line 1408 "cgrammar.y"
 { yyval.ctyp = ctype_expectFunction (yyvsp[-1].ctyp); ;
     break;}
-case 406:
-#line 1112 "cgrammar.y"
+case 455:
+#line 1409 "cgrammar.y"
 { yyval.ctyp = ctype_makeArray (ctype_unknown); ;
     break;}
-case 407:
-#line 1113 "cgrammar.y"
-{ yyval.ctyp = ctype_makeArray (ctype_unknown); ;
+case 456:
+#line 1411 "cgrammar.y"
+{ yyval.ctyp = ctype_makeFixedArray (ctype_unknown, exprNode_getLongValue (yyvsp[-1].expr)); ;
     break;}
-case 408:
-#line 1114 "cgrammar.y"
+case 457:
+#line 1412 "cgrammar.y"
 { yyval.ctyp = ctype_makeArray (yyvsp[-2].ctyp); ;
     break;}
-case 409:
-#line 1115 "cgrammar.y"
-{ yyval.ctyp = ctype_makeArray (yyvsp[-3].ctyp); ;
+case 458:
+#line 1414 "cgrammar.y"
+{ yyval.ctyp = ctype_makeFixedArray (yyvsp[-3].ctyp, exprNode_getLongValue (yyvsp[-1].expr)); ;
     break;}
-case 410:
-#line 1117 "cgrammar.y"
+case 459:
+#line 1416 "cgrammar.y"
 { yyval.ctyp = ctype_makeFunction (ctype_unknown, uentryList_makeMissingParams ()); ;
     break;}
-case 411:
-#line 1119 "cgrammar.y"
+case 460:
+#line 1418 "cgrammar.y"
 { yyval.ctyp = ctype_makeParamsFunction (ctype_unknown, yyvsp[-1].entrylist); ;
     break;}
-case 412:
-#line 1121 "cgrammar.y"
+case 461:
+#line 1420 "cgrammar.y"
 { yyval.ctyp = ctype_makeFunction (yyvsp[-3].ctyp, uentryList_makeMissingParams ()); ;
     break;}
-case 413:
-#line 1123 "cgrammar.y"
+case 462:
+#line 1422 "cgrammar.y"
 { yyval.ctyp = ctype_makeParamsFunction (yyvsp[-4].ctyp, yyvsp[-1].entrylist); ;
     break;}
-case 423:
-#line 1139 "cgrammar.y"
+case 472:
+#line 1450 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 426:
-#line 1147 "cgrammar.y"
+case 475:
+#line 1458 "cgrammar.y"
 { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 427:
-#line 1151 "cgrammar.y"
+case 476:
+#line 1462 "cgrammar.y"
 { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 428:
-#line 1153 "cgrammar.y"
+case 477:
+#line 1464 "cgrammar.y"
 { yyval.expr = exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr); ;
     break;}
-case 429:
-#line 1155 "cgrammar.y"
+case 478:
+#line 1466 "cgrammar.y"
 { yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ;
     break;}
-case 430:
-#line 1157 "cgrammar.y"
+case 479:
+#line 1468 "cgrammar.y"
 { yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 431:
-#line 1161 "cgrammar.y"
+case 480:
+#line 1472 "cgrammar.y"
 { context_setProtectVars (); ;
     break;}
-case 432:
-#line 1161 "cgrammar.y"
+case 481:
+#line 1472 "cgrammar.y"
 { context_sizeofReleaseVars (); ;
     break;}
-case 433:
-#line 1163 "cgrammar.y"
+case 482:
+#line 1474 "cgrammar.y"
 { yyval.expr = exprNode_forPred (yyvsp[-7].expr, yyvsp[-5].expr, yyvsp[-2].expr); 
      context_enterForClause (yyvsp[-5].expr); ;
     break;}
-case 434:
-#line 1168 "cgrammar.y"
+case 483:
+#line 1479 "cgrammar.y"
 { setProcessingIterVars (yyvsp[-2].entry); ;
     break;}
-case 435:
-#line 1170 "cgrammar.y"
-{ yyval.expr = exprNode_iterStart (yyvsp[-5].entry, yyvsp[-1].alist); ;
+case 484:
+#line 1481 "cgrammar.y"
+{ yyval.expr = exprNode_iterStart (yyvsp[-5].entry, yyvsp[-1].exprlist); ;
     break;}
-case 436:
-#line 1171 "cgrammar.y"
+case 485:
+#line 1482 "cgrammar.y"
 { yyval.expr = exprNode_createId (yyvsp[0].entry); ;
     break;}
-case 440:
-#line 1177 "cgrammar.y"
-{ yyval.expr = yyvsp[0].expr; ;
+case 489:
+#line 1488 "cgrammar.y"
+{ yyval.expr = yyvsp[-1].expr; DPRINTF (("def stmt: %s", exprNode_unparse (yyval.expr))); ;
     break;}
-case 448:
-#line 1185 "cgrammar.y"
+case 497:
+#line 1496 "cgrammar.y"
 { yyval.expr = yyvsp[-1].expr; ;
     break;}
-case 449:
-#line 1186 "cgrammar.y"
+case 498:
+#line 1497 "cgrammar.y"
 { yyval.expr = exprNode_makeError (); ;
     break;}
-case 450:
-#line 1190 "cgrammar.y"
+case 499:
+#line 1501 "cgrammar.y"
 { /* don't: context_exitTrueClause ($1, $2); */
      yyval.expr = exprNode_if (yyvsp[-1].expr, yyvsp[0].expr); 
    ;
     break;}
-case 451:
-#line 1195 "cgrammar.y"
+case 500:
+#line 1506 "cgrammar.y"
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
-case 452:
-#line 1198 "cgrammar.y"
+case 501:
+#line 1509 "cgrammar.y"
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
-case 463:
-#line 1213 "cgrammar.y"
+case 512:
+#line 1524 "cgrammar.y"
 { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ;
     break;}
-case 465:
-#line 1215 "cgrammar.y"
+case 514:
+#line 1526 "cgrammar.y"
 { yyval.expr = exprNode_makeError (); ;
     break;}
-case 466:
-#line 1218 "cgrammar.y"
-{ yyval.expr = exprNode_labelStatement (yyvsp[-2].cname, yyvsp[0].expr); ;
+case 515:
+#line 1529 "cgrammar.y"
+{ yyval.expr = exprNode_labelMarker (yyvsp[-1].cname); ;
     break;}
-case 467:
-#line 1219 "cgrammar.y"
+case 516:
+#line 1530 "cgrammar.y"
 { yyval.expr = exprNode_notReached (yyvsp[0].expr); ;
     break;}
-case 468:
-#line 1225 "cgrammar.y"
+case 517:
+#line 1536 "cgrammar.y"
 { context_enterCaseClause (yyvsp[0].expr); ;
     break;}
-case 469:
-#line 1226 "cgrammar.y"
-{ yyval.expr = exprNode_caseStatement (yyvsp[-3].expr, yyvsp[0].expr, FALSE); ;
+case 518:
+#line 1537 "cgrammar.y"
+{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, FALSE); ;
     break;}
-case 470:
-#line 1227 "cgrammar.y"
+case 519:
+#line 1538 "cgrammar.y"
 { context_enterCaseClause (yyvsp[0].expr); ;
     break;}
-case 471:
-#line 1228 "cgrammar.y"
-{ yyval.expr = exprNode_caseStatement (yyvsp[-3].expr, yyvsp[0].expr, TRUE); ;
+case 520:
+#line 1539 "cgrammar.y"
+{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, TRUE); ;
     break;}
-case 472:
-#line 1231 "cgrammar.y"
+case 521:
+#line 1542 "cgrammar.y"
 { context_enterCaseClause (exprNode_undefined); ;
     break;}
-case 473:
-#line 1232 "cgrammar.y"
-{ yyval.expr = exprNode_defaultStatement (yyvsp[-3].tok, yyvsp[0].expr, FALSE); ;
+case 522:
+#line 1543 "cgrammar.y"
+{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, FALSE); ;
     break;}
-case 474:
-#line 1233 "cgrammar.y"
+case 523:
+#line 1544 "cgrammar.y"
 { context_enterCaseClause (exprNode_undefined); ;
     break;}
-case 475:
-#line 1234 "cgrammar.y"
-{ yyval.expr = exprNode_defaultStatement (yyvsp[-3].tok, yyvsp[0].expr, TRUE); ;
+case 524:
+#line 1545 "cgrammar.y"
+{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, TRUE); ;
     break;}
-case 476:
-#line 1237 "cgrammar.y"
+case 525:
+#line 1548 "cgrammar.y"
 { yyval.expr = yyvsp[-1].expr; ;
     break;}
-case 477:
-#line 1239 "cgrammar.y"
+case 526:
+#line 1550 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; context_exitInner (yyvsp[0].expr); ;
     break;}
-case 478:
-#line 1242 "cgrammar.y"
+case 527:
+#line 1553 "cgrammar.y"
 { yyval.expr = yyvsp[-1].expr; ;
     break;}
-case 479:
-#line 1245 "cgrammar.y"
+case 528:
+#line 1556 "cgrammar.y"
 { context_enterInnerContext (); ;
     break;}
-case 480:
-#line 1248 "cgrammar.y"
+case 529:
+#line 1559 "cgrammar.y"
 { context_exitInnerPlain (); ;
     break;}
-case 481:
-#line 1251 "cgrammar.y"
+case 530:
+#line 1562 "cgrammar.y"
 { context_enterStructInnerContext (); ;
     break;}
-case 482:
-#line 1254 "cgrammar.y"
+case 531:
+#line 1565 "cgrammar.y"
 { context_exitStructInnerContext (); ;
     break;}
-case 483:
-#line 1257 "cgrammar.y"
+case 532:
+#line 1568 "cgrammar.y"
 { context_exitInnerSafe (); ;
     break;}
-case 484:
-#line 1260 "cgrammar.y"
+case 533:
+#line 1571 "cgrammar.y"
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
-case 485:
-#line 1261 "cgrammar.y"
+case 534:
+#line 1572 "cgrammar.y"
 { yyval.expr = exprNode_notReached (exprNode_createTok (yyvsp[0].tok)); ;
     break;}
-case 486:
-#line 1262 "cgrammar.y"
+case 535:
+#line 1573 "cgrammar.y"
 { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ;
     break;}
-case 487:
-#line 1264 "cgrammar.y"
+case 536:
+#line 1575 "cgrammar.y"
 { yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ;
     break;}
-case 488:
-#line 1265 "cgrammar.y"
+case 537:
+#line 1576 "cgrammar.y"
 { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ;
     break;}
-case 489:
-#line 1267 "cgrammar.y"
+case 538:
+#line 1578 "cgrammar.y"
 { yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ;
     break;}
-case 490:
-#line 1269 "cgrammar.y"
+case 539:
+#line 1580 "cgrammar.y"
 { yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ;
     break;}
-case 491:
-#line 1271 "cgrammar.y"
+case 540:
+#line 1582 "cgrammar.y"
 { yyval.expr = exprNode_notReached (exprNode_updateLocation (exprNode_concat (yyvsp[-3].expr, yyvsp[-2].expr), 
                                                        lltok_getLoc (yyvsp[-1].tok))); 
    ;
     break;}
-case 492:
-#line 1278 "cgrammar.y"
+case 541:
+#line 1588 "cgrammar.y"
 { yyval.expr = exprNode_makeBlock (yyvsp[0].expr); ;
     break;}
-case 493:
-#line 1282 "cgrammar.y"
+case 542:
+#line 1592 "cgrammar.y"
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
-case 494:
-#line 1284 "cgrammar.y"
+case 543:
+#line 1594 "cgrammar.y"
 { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ;
     break;}
-case 495:
-#line 1286 "cgrammar.y"
+case 544:
+#line 1596 "cgrammar.y"
 { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ;
     break;}
-case 496:
-#line 1288 "cgrammar.y"
+case 545:
+#line 1598 "cgrammar.y"
 { yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ;
     break;}
-case 498:
-#line 1292 "cgrammar.y"
+case 547:
+#line 1602 "cgrammar.y"
 { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 499:
-#line 1295 "cgrammar.y"
+case 548:
+#line 1605 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 500:
-#line 1296 "cgrammar.y"
+case 549:
+#line 1606 "cgrammar.y"
 { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 501:
-#line 1299 "cgrammar.y"
+case 550:
+#line 1609 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 502:
-#line 1300 "cgrammar.y"
+case 551:
+#line 1610 "cgrammar.y"
 { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 503:
-#line 1303 "cgrammar.y"
+case 552:
+#line 1613 "cgrammar.y"
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
-case 504:
-#line 1304 "cgrammar.y"
-{ yyval.expr = exprNode_statement (yyvsp[-1].expr); ;
+case 553:
+#line 1614 "cgrammar.y"
+{ yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
-case 505:
-#line 1307 "cgrammar.y"
+case 554:
+#line 1617 "cgrammar.y"
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
-case 506:
-#line 1308 "cgrammar.y"
-{ yyval.expr = exprNode_statement (yyvsp[-1].expr); ;
+case 555:
+#line 1618 "cgrammar.y"
+{ yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
-case 507:
-#line 1309 "cgrammar.y"
+case 556:
+#line 1619 "cgrammar.y"
 { yyval.expr = exprNode_checkExpr (yyvsp[0].expr); ;
     break;}
-case 508:
-#line 1313 "cgrammar.y"
+case 557:
+#line 1623 "cgrammar.y"
 { yyval.expr = yyvsp[-1].expr; exprNode_produceGuards (yyvsp[-1].expr); context_enterTrueClause (yyvsp[-1].expr); ;
     break;}
-case 509:
-#line 1321 "cgrammar.y"
+case 558:
+#line 1631 "cgrammar.y"
 { 
      context_exitTrueClause (yyvsp[-1].expr, yyvsp[0].expr);
      yyval.expr = exprNode_if (yyvsp[-1].expr, yyvsp[0].expr); 
    ;
     break;}
-case 510:
-#line 1325 "cgrammar.y"
+case 559:
+#line 1635 "cgrammar.y"
 { context_enterFalseClause (yyvsp[-2].expr); ;
     break;}
-case 511:
-#line 1326 "cgrammar.y"
+case 560:
+#line 1636 "cgrammar.y"
 {
      context_exitClause (yyvsp[-4].expr, yyvsp[-3].expr, yyvsp[0].expr);
      yyval.expr = exprNode_ifelse (yyvsp[-4].expr, yyvsp[-3].expr, yyvsp[0].expr); 
    ;
     break;}
-case 512:
-#line 1330 "cgrammar.y"
+case 561:
+#line 1640 "cgrammar.y"
 { context_enterSwitch (yyvsp[0].expr); ;
     break;}
-case 513:
-#line 1331 "cgrammar.y"
+case 562:
+#line 1641 "cgrammar.y"
 { yyval.expr = exprNode_switch (yyvsp[-3].expr, yyvsp[0].expr); ;
     break;}
-case 514:
-#line 1335 "cgrammar.y"
+case 563:
+#line 1645 "cgrammar.y"
 { yyval.expr = exprNode_whilePred (yyvsp[-1].expr); context_enterWhileClause (yyvsp[-1].expr); ;
     break;}
-case 515:
-#line 1339 "cgrammar.y"
+case 564:
+#line 1649 "cgrammar.y"
 { yyval.expr = exprNode_whilePred(yyvsp[-1].expr); ;
     break;}
-case 516:
-#line 1342 "cgrammar.y"
+case 565:
+#line 1652 "cgrammar.y"
 { context_enterIterClause (); ;
     break;}
-case 517:
-#line 1343 "cgrammar.y"
+case 566:
+#line 1653 "cgrammar.y"
 { setProcessingIterVars (yyvsp[-3].entry); ;
     break;}
-case 518:
-#line 1346 "cgrammar.y"
+case 567:
+#line 1656 "cgrammar.y"
 { 
-     yyval.expr = exprNode_iter (yyvsp[-9].entry, yyvsp[-4].alist, yyvsp[-2].expr, yyvsp[-1].entry); 
+     yyval.expr = exprNode_iter (yyvsp[-9].entry, yyvsp[-4].exprlist, yyvsp[-2].expr, yyvsp[-1].entry); 
 
    ;
     break;}
-case 519:
-#line 1352 "cgrammar.y"
-{ yyval.alist = exprNodeList_singleton (yyvsp[0].expr); ;
+case 568:
+#line 1662 "cgrammar.y"
+{ yyval.exprlist = exprNodeList_singleton (yyvsp[0].expr); ;
     break;}
-case 520:
-#line 1353 "cgrammar.y"
+case 569:
+#line 1663 "cgrammar.y"
 { nextIterParam (); ;
     break;}
-case 521:
-#line 1354 "cgrammar.y"
-{ yyval.alist = exprNodeList_push (yyvsp[-3].alist, yyvsp[0].expr); ;
+case 570:
+#line 1664 "cgrammar.y"
+{ yyval.exprlist = exprNodeList_push (yyvsp[-3].exprlist, yyvsp[0].expr); ;
     break;}
-case 522:
-#line 1357 "cgrammar.y"
+case 571:
+#line 1667 "cgrammar.y"
 { yyval.expr = exprNode_iterExpr (yyvsp[0].expr); ;
     break;}
-case 523:
-#line 1358 "cgrammar.y"
+case 572:
+#line 1668 "cgrammar.y"
 { yyval.expr = exprNode_iterId (yyvsp[0].entry); ;
     break;}
-case 524:
-#line 1359 "cgrammar.y"
-{ uentry ue = coerceIterId (yyvsp[0].ctyp);
+case 573:
+#line 1669 "cgrammar.y"
+{ uentry ue = coerceIterId (yyvsp[0].cname);
 
                      if (uentry_isValid (ue)) 
                        {
@@ -4846,313 +5298,325 @@ case 524:
                        }
                    ;
     break;}
-case 525:
-#line 1370 "cgrammar.y"
+case 574:
+#line 1680 "cgrammar.y"
 { yyval.expr = exprNode_iterNewId (yyvsp[0].cname); ;
     break;}
-case 527:
-#line 1378 "cgrammar.y"
+case 576:
+#line 1688 "cgrammar.y"
+{ yyval.expr = exprNode_combineLiterals (yyvsp[-1].expr, yyvsp[0].expr); ;
+    break;}
+case 578:
+#line 1692 "cgrammar.y"
 { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ;
     break;}
-case 529:
-#line 1382 "cgrammar.y"
+case 580:
+#line 1696 "cgrammar.y"
 { yyval.expr = exprNode_arrayFetch (yyvsp[-3].expr, yyvsp[-1].expr); ;
     break;}
-case 530:
-#line 1383 "cgrammar.y"
+case 581:
+#line 1697 "cgrammar.y"
 { yyval.expr = exprNode_functionCall (yyvsp[-2].expr, exprNodeList_new ()); ;
     break;}
-case 531:
-#line 1384 "cgrammar.y"
-{ yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].alist); ;
+case 582:
+#line 1698 "cgrammar.y"
+{ yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].exprlist); ;
     break;}
-case 532:
-#line 1386 "cgrammar.y"
+case 583:
+#line 1700 "cgrammar.y"
 { yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ;
     break;}
-case 533:
-#line 1387 "cgrammar.y"
-{ yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-1].cname); ;
+case 584:
+#line 1701 "cgrammar.y"
+{ yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ;
     break;}
-case 534:
-#line 1388 "cgrammar.y"
-{ yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-1].cname); ;
+case 585:
+#line 1702 "cgrammar.y"
+{ yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ;
     break;}
-case 535:
-#line 1389 "cgrammar.y"
+case 586:
+#line 1703 "cgrammar.y"
 { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
-case 536:
-#line 1390 "cgrammar.y"
+case 587:
+#line 1704 "cgrammar.y"
 { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
-case 538:
-#line 1394 "cgrammar.y"
+case 589:
+#line 1708 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 539:
-#line 1395 "cgrammar.y"
+case 590:
+#line 1709 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 540:
-#line 1396 "cgrammar.y"
+case 591:
+#line 1710 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 541:
-#line 1397 "cgrammar.y"
+case 592:
+#line 1711 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 542:
-#line 1398 "cgrammar.y"
+case 593:
+#line 1712 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 543:
-#line 1399 "cgrammar.y"
+case 594:
+#line 1713 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 544:
-#line 1400 "cgrammar.y"
+case 595:
+#line 1714 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 545:
-#line 1401 "cgrammar.y"
+case 596:
+#line 1715 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 546:
-#line 1402 "cgrammar.y"
+case 597:
+#line 1716 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 548:
-#line 1406 "cgrammar.y"
+case 599:
+#line 1720 "cgrammar.y"
 { yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ;
     break;}
-case 550:
-#line 1410 "cgrammar.y"
+case 601:
+#line 1724 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 551:
-#line 1411 "cgrammar.y"
+case 602:
+#line 1725 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 552:
-#line 1412 "cgrammar.y"
+case 603:
+#line 1726 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 554:
-#line 1416 "cgrammar.y"
+case 605:
+#line 1730 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 555:
-#line 1417 "cgrammar.y"
+case 606:
+#line 1731 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 557:
-#line 1421 "cgrammar.y"
+case 608:
+#line 1735 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 558:
-#line 1422 "cgrammar.y"
+case 609:
+#line 1736 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 560:
-#line 1426 "cgrammar.y"
+case 611:
+#line 1740 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 561:
-#line 1427 "cgrammar.y"
+case 612:
+#line 1741 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 562:
-#line 1428 "cgrammar.y"
+case 613:
+#line 1742 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 563:
-#line 1429 "cgrammar.y"
+case 614:
+#line 1743 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 565:
-#line 1433 "cgrammar.y"
+case 616:
+#line 1747 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 566:
-#line 1434 "cgrammar.y"
+case 617:
+#line 1748 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 568:
-#line 1438 "cgrammar.y"
+case 619:
+#line 1752 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 570:
-#line 1442 "cgrammar.y"
+case 621:
+#line 1756 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 572:
-#line 1447 "cgrammar.y"
+case 623:
+#line 1761 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 574:
-#line 1451 "cgrammar.y"
+case 625:
+#line 1765 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 576:
-#line 1455 "cgrammar.y"
+case 627:
+#line 1769 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 578:
-#line 1459 "cgrammar.y"
+case 629:
+#line 1773 "cgrammar.y"
 { context_enterTrueClause (yyvsp[-1].expr); ;
     break;}
-case 579:
-#line 1460 "cgrammar.y"
+case 630:
+#line 1774 "cgrammar.y"
 { context_enterFalseClause (yyvsp[-4].expr); ;
     break;}
-case 580:
-#line 1461 "cgrammar.y"
+case 631:
+#line 1775 "cgrammar.y"
 { yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ;
     break;}
-case 582:
-#line 1465 "cgrammar.y"
+case 633:
+#line 1779 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 583:
-#line 1466 "cgrammar.y"
+case 634:
+#line 1780 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 584:
-#line 1467 "cgrammar.y"
+case 635:
+#line 1781 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 585:
-#line 1468 "cgrammar.y"
+case 636:
+#line 1782 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 586:
-#line 1469 "cgrammar.y"
+case 637:
+#line 1783 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 587:
-#line 1470 "cgrammar.y"
+case 638:
+#line 1784 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 588:
-#line 1471 "cgrammar.y"
+case 639:
+#line 1785 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 589:
-#line 1472 "cgrammar.y"
+case 640:
+#line 1786 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 590:
-#line 1473 "cgrammar.y"
+case 641:
+#line 1787 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 591:
-#line 1474 "cgrammar.y"
+case 642:
+#line 1788 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 592:
-#line 1475 "cgrammar.y"
+case 643:
+#line 1789 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 593:
-#line 1478 "cgrammar.y"
+case 644:
+#line 1792 "cgrammar.y"
 { yyval.entry = yyvsp[0].entry; ;
     break;}
-case 594:
-#line 1479 "cgrammar.y"
+case 645:
+#line 1793 "cgrammar.y"
 { yyval.entry = uentry_undefined; ;
     break;}
-case 595:
-#line 1482 "cgrammar.y"
+case 646:
+#line 1796 "cgrammar.y"
 { context_enterDoWhileClause (); yyval.tok = yyvsp[0].tok; ;
     break;}
-case 596:
-#line 1486 "cgrammar.y"
+case 647:
+#line 1800 "cgrammar.y"
 { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 597:
-#line 1488 "cgrammar.y"
-{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr)); ;
+case 648:
+#line 1802 "cgrammar.y"
+{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ;
     break;}
-case 598:
-#line 1490 "cgrammar.y"
+case 649:
+#line 1804 "cgrammar.y"
 { yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 599:
-#line 1493 "cgrammar.y"
+case 650:
+#line 1807 "cgrammar.y"
 { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 600:
-#line 1495 "cgrammar.y"
-{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr)); ;
+case 651:
+#line 1809 "cgrammar.y"
+{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ;
     break;}
-case 601:
-#line 1497 "cgrammar.y"
+case 652:
+#line 1811 "cgrammar.y"
 { yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ;
     break;}
-case 602:
-#line 1498 "cgrammar.y"
+case 653:
+#line 1812 "cgrammar.y"
 { yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 603:
-#line 1501 "cgrammar.y"
+case 654:
+#line 1815 "cgrammar.y"
 { yyval.expr = exprNode_goto (yyvsp[-1].cname); ;
     break;}
-case 604:
-#line 1502 "cgrammar.y"
+case 655:
+#line 1816 "cgrammar.y"
 { yyval.expr = exprNode_continue (yyvsp[-1].tok, BADTOK); ;
     break;}
-case 605:
-#line 1504 "cgrammar.y"
+case 656:
+#line 1818 "cgrammar.y"
 { yyval.expr = exprNode_continue (yyvsp[-2].tok, QINNERCONTINUE); ;
     break;}
-case 606:
-#line 1505 "cgrammar.y"
+case 657:
+#line 1819 "cgrammar.y"
 { yyval.expr = exprNode_break (yyvsp[-1].tok, BADTOK); ;
     break;}
-case 607:
-#line 1506 "cgrammar.y"
+case 658:
+#line 1820 "cgrammar.y"
 { yyval.expr = exprNode_break (yyvsp[-1].tok, QSWITCHBREAK); ;
     break;}
-case 608:
-#line 1507 "cgrammar.y"
+case 659:
+#line 1821 "cgrammar.y"
 { yyval.expr = exprNode_break (yyvsp[-1].tok, QLOOPBREAK); ;
     break;}
-case 609:
-#line 1508 "cgrammar.y"
+case 660:
+#line 1822 "cgrammar.y"
 { yyval.expr = exprNode_break (yyvsp[-1].tok, QINNERBREAK); ;
     break;}
-case 610:
-#line 1509 "cgrammar.y"
+case 661:
+#line 1823 "cgrammar.y"
 { yyval.expr = exprNode_break (yyvsp[-1].tok, QSAFEBREAK); ;
     break;}
-case 611:
-#line 1510 "cgrammar.y"
+case 662:
+#line 1824 "cgrammar.y"
 { yyval.expr = exprNode_nullReturn (yyvsp[-1].tok); ;
     break;}
-case 612:
-#line 1511 "cgrammar.y"
+case 663:
+#line 1825 "cgrammar.y"
 { yyval.expr = exprNode_return (yyvsp[-1].expr); ;
     break;}
-case 614:
-#line 1515 "cgrammar.y"
+case 665:
+#line 1829 "cgrammar.y"
 { ; ;
     break;}
-case 617:
-#line 1522 "cgrammar.y"
+case 668:
+#line 1836 "cgrammar.y"
 { yyval.cname = uentry_getName (yyvsp[0].entry); ;
     break;}
-case 618:
-#line 1523 "cgrammar.y"
+case 669:
+#line 1837 "cgrammar.y"
 { yyval.cname = uentry_getName (yyvsp[0].entry); ;
     break;}
-case 619:
-#line 1524 "cgrammar.y"
+case 670:
+#line 1838 "cgrammar.y"
 { yyval.cname = uentry_getName (yyvsp[0].entry); ;
     break;}
+case 671:
+#line 1839 "cgrammar.y"
+{ yyval.cname = yyvsp[0].cname; ;
+    break;}
+case 673:
+#line 1843 "cgrammar.y"
+{ yyval.ctyp = ctype_unknown; ;
+    break;}
 }
    /* the action file gets copied in in place of this dollarsign */
-#line 498 "/usr/share/bison.simple"
+#line 543 "/usr/lib/bison.simple"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -5347,13 +5811,37 @@ yyerrhandle:
 
   yystate = yyn;
   goto yynewstate;
+
+ yyacceptlab:
+  /* YYACCEPT comes here.  */
+  if (yyfree_stacks)
+    {
+      free (yyss);
+      free (yyvs);
+#ifdef YYLSP_NEEDED
+      free (yyls);
+#endif
+    }
+  return 0;
+
+ yyabortlab:
+  /* YYABORT comes here.  */
+  if (yyfree_stacks)
+    {
+      free (yyss);
+      free (yyvs);
+#ifdef YYLSP_NEEDED
+      free (yyls);
+#endif
+    }
+  return 1;
 }
-#line 1530 "cgrammar.y"
+#line 1845 "cgrammar.y"
 
 
-/*@-redecl@*/
+/*@-redecl@*/ /*@-namechecks@*/
 extern char *yytext;
-/*@=redecl@*/
+/*@=redecl@*/ /*@=namechecks@*/
 
 # include "bison.reset"
 
@@ -5376,7 +5864,7 @@ void yyerror (/*@unused@*/ char *s)
       llerror (FLG_SYNTAX, message ("Macro syntax not parseable: %s", 
                                    context_inFunctionName ()));
       
-      if (context_inMacroUnknown ())
+      if (context_inUnknownMacro ())
        {
          if (!givehint)
            {
@@ -5388,6 +5876,7 @@ void yyerror (/*@unused@*/ char *s)
        }
 
       swallowMacro ();
+      context_exitAllClausesQuiet ();
     }
   else
     {
@@ -5406,4 +5895,51 @@ void yyerror (/*@unused@*/ char *s)
 
 
 
+/*
+** Resets all flags in bison.head
+*/
+
 
+/*@=allmacros@*/
+/*@=boolint@*/
+/*@=charint@*/
+/*@=macroparams@*/
+/*@=macroundef@*/
+/*@=unreachable@*/
+/*@=macrospec@*/
+/*@=varuse@*/
+/*@=ignorequals@*/
+/*@=macrostmt@*/
+/*@=noeffect@*/
+/*@=shadow@*/
+/*@=exitarg@*/
+/*@=macroredef@*/
+/*@=uniondef@*/
+/*@=compdef@*/
+/*@=matchfields@*/
+/*@=exportlocal@*/
+/*@=evalorderuncon@*/
+/*@=exportheader@*/
+/*@=typeuse@*/
+/*@=redecl@*/
+/*@=redef@*/
+/*@=noparams@*/
+/*@=ansireserved@*/
+/*@=fielduse@*/
+/*@=ifblock@*/
+/*@=elseifcomplete@*/
+/*@=whileblock@*/
+/*@=forblock@*/
+/*@=branchstate@*/
+/*@=readonlytrans@*/
+/*@=namechecks@*/
+/*@=usedef@*/
+/*@=systemunrecog@*/
+/*@=dependenttrans@*/
+/*@=unqualifiedtrans@*/
+/*@=declundef@*/
+
+
+/*drl added 11/27/2001*/
+/*@=arraybounds@*/
+/*@=arrayboundsread@*/
This page took 0.53534 seconds and 4 git commands to generate.