[project @ 1996-01-18 16:33:17 by partain]
[ghc-hetmet.git] / ghc / compiler / yaccParser / hsparser.tab.c
index 1fbc148..64e3327 100644 (file)
@@ -199,8 +199,7 @@ extern BOOLEAN haskell1_3Flag;              /*  True if we are attempting (proto)Haskell 1.3
 
 extern int thisIfacePragmaVersion;
 
-
-#line 100 "yaccParser/hsparser.y"
+#line 99 "yaccParser/hsparser.y"
 typedef union {
        tree utree;
        list ulist;
@@ -246,11 +245,11 @@ typedef
 
 
 
-#define        YYFINAL         1094
+#define        YYFINAL         1105
 #define        YYFLAG          -32768
 #define        YYNTBASE        120
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 374 ? yytranslate[x] : 347)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 374 ? yytranslate[x] : 343)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -300,308 +299,309 @@ static const short yyprhs[] = {     0,
     74,    78,    81,    85,    90,    93,    94,    96,    98,   102,
    104,   106,   111,   116,   121,   125,   130,   134,   135,   138,
    139,   141,   145,   149,   153,   154,   158,   159,   164,   165,
-   170,   176,   182,   183,   186,   187,   190,   194,   195,   197,
-   204,   206,   209,   211,   214,   216,   218,   220,   223,   227,
-   231,   232,   234,   237,   241,   243,   249,   251,   255,   257,
-   260,   262,   266,   272,   274,   278,   285,   287,   291,   293,
-   295,   296,   298,   300,   304,   308,   313,   318,   323,   330,
-   335,   339,   345,   352,   361,   368,   374,   376,   378,   382,
-   386,   387,   390,   396,   397,   400,   405,   407,   411,   413,
-   417,   421,   424,   429,   436,   443,   450,   452,   454,   456,
-   458,   462,   466,   470,   476,   483,   489,   492,   496,   500,
-   502,   504,   513,   522,   531,   540,   542,   543,   546,   552,
-   555,   559,   561,   565,   567,   569,   571,   574,   576,   580,
-   583,   587,   589,   593,   595,   597,   601,   603,   605,   606,
-   609,   610,   613,   614,   617,   619,   623,   624,   629,   632,
-   637,   640,   644,   646,   650,   654,   658,   659,   662,   664,
-   668,   674,   682,   683,   689,   695,   699,   705,   709,   710,
-   713,   715,   719,   720,   725,   726,   731,   732,   737,   738,
-   742,   743,   747,   748,   752,   754,   758,   760,   764,   766,
-   768,   770,   772,   774,   776,   781,   788,   793,   802,   809,
-   815,   819,   820,   825,   830,   837,   842,   843,   848,   853,
-   855,   859,   863,   866,   870,   876,   879,   885,   887,   889,
-   893,   900,   905,   911,   917,   923,   928,   933,   937,   941,
-   943,   944,   945,   947,   949,   953,   955,   959,   961,   965,
-   967,   969,   971,   973,   975,   976,   983,   988,   994,  1000,
-  1004,  1012,  1018,  1027,  1034,  1041,  1046,  1053,  1058,  1061,
-  1063,  1067,  1069,  1073,  1078,  1080,  1083,  1086,  1088,  1090,
-  1094,  1097,  1099,  1105,  1107,  1109,  1112,  1116,  1120,  1127,
-  1129,  1131,  1134,  1137,  1139,  1143,  1146,  1151,  1153,  1157,
-  1161,  1165,  1168,  1170,  1172,  1176,  1180,  1182,  1184,  1188,
-  1189,  1191,  1195,  1200,  1205,  1207,  1211,  1213,  1215,  1219,
-  1221,  1225,  1226,  1230,  1233,  1235,  1238,  1242,  1247,  1252,
-  1257,  1258,  1261,  1264,  1266,  1272,  1276,  1278,  1280,  1284,
-  1287,  1289,  1290,  1291,  1298,  1305,  1312,  1319,  1326,  1333,
-  1337,  1340,  1344,  1347,  1351,  1354,  1358,  1361,  1365,  1367,
-  1370,  1372,  1375,  1377,  1379,  1381,  1383,  1387,  1392,  1397,
-  1399,  1401,  1403,  1405,  1409,  1411,  1414,  1416,  1420,  1422,
-  1426,  1429,  1431,  1434,  1436,  1439,  1441,  1444,  1446,  1448,
-  1450,  1454,  1456,  1458,  1461,  1467,  1471,  1477,  1481,  1484,
-  1487,  1489,  1491,  1495,  1497,  1499,  1502,  1508,  1512,  1518,
-  1522,  1525,  1528,  1534,  1537,  1539,  1543,  1546,  1550,  1552,
-  1556,  1564,  1570,  1576,  1578,  1582,  1583,  1584,  1589,  1592,
-  1593,  1595,  1599,  1600,  1604,  1605,  1608,  1612,  1617,  1621,
-  1622,  1624,  1628,  1630,  1632,  1636,  1638,  1640,  1643,  1646,
-  1648,  1651,  1653,  1655,  1657,  1661,  1663,  1665,  1668,  1674,
-  1678,  1684,  1688,  1691,  1694,  1696,  1698,  1700,  1702,  1704,
-  1706,  1708,  1710,  1712,  1714,  1718,  1721,  1725,  1728,  1730,
-  1732,  1734,  1736,  1738,  1740,  1742,  1744,  1746,  1748,  1750,
-  1752,  1754,  1756,  1758,  1760,  1764,  1766,  1768,  1772,  1774,
-  1778,  1780,  1782,  1784,  1786,  1788,  1790,  1794,  1796,  1800,
-  1802,  1806,  1808,  1812,  1814,  1816,  1820,  1824,  1826,  1829,
-  1831,  1833,  1835,  1837,  1840,  1842,  1843,  1845,  1846,  1849,
-  1851
+   170,   176,   177,   180,   181,   185,   186,   188,   195,   197,
+   200,   202,   205,   207,   209,   211,   214,   218,   222,   223,
+   225,   228,   232,   234,   240,   242,   246,   248,   251,   253,
+   257,   263,   265,   269,   271,   273,   275,   279,   285,   289,
+   294,   299,   304,   311,   316,   320,   326,   333,   342,   349,
+   355,   357,   359,   363,   367,   368,   371,   377,   378,   381,
+   386,   388,   392,   394,   398,   402,   405,   410,   417,   424,
+   431,   433,   435,   437,   439,   443,   447,   451,   457,   464,
+   470,   473,   477,   481,   483,   485,   494,   503,   512,   521,
+   523,   524,   527,   533,   536,   540,   542,   546,   548,   550,
+   552,   555,   557,   561,   564,   568,   570,   574,   576,   578,
+   582,   584,   586,   587,   590,   591,   594,   595,   598,   600,
+   604,   605,   610,   613,   618,   621,   625,   627,   631,   635,
+   639,   640,   643,   645,   649,   655,   663,   664,   670,   676,
+   680,   686,   690,   691,   694,   696,   700,   701,   706,   707,
+   712,   713,   718,   719,   723,   724,   728,   729,   733,   735,
+   739,   741,   745,   747,   749,   751,   753,   755,   757,   762,
+   769,   774,   783,   790,   796,   800,   801,   806,   811,   818,
+   823,   824,   829,   834,   836,   841,   847,   850,   854,   860,
+   862,   867,   873,   876,   880,   886,   889,   895,   897,   899,
+   903,   910,   915,   921,   927,   933,   938,   943,   947,   951,
+   953,   954,   955,   957,   959,   963,   965,   969,   971,   975,
+   977,   979,   981,   983,   985,   986,   993,   998,  1004,  1010,
+  1014,  1022,  1028,  1037,  1044,  1051,  1056,  1063,  1068,  1071,
+  1073,  1077,  1079,  1083,  1088,  1090,  1093,  1096,  1098,  1100,
+  1104,  1107,  1109,  1115,  1117,  1119,  1122,  1126,  1130,  1137,
+  1139,  1141,  1144,  1146,  1150,  1153,  1158,  1160,  1164,  1168,
+  1172,  1175,  1177,  1179,  1183,  1187,  1189,  1191,  1195,  1196,
+  1198,  1202,  1208,  1213,  1218,  1220,  1224,  1226,  1228,  1232,
+  1234,  1238,  1239,  1243,  1246,  1248,  1251,  1255,  1260,  1265,
+  1270,  1271,  1274,  1277,  1279,  1285,  1289,  1291,  1293,  1297,
+  1300,  1302,  1303,  1304,  1311,  1318,  1325,  1332,  1339,  1346,
+  1350,  1353,  1357,  1360,  1364,  1367,  1371,  1374,  1378,  1380,
+  1383,  1385,  1388,  1390,  1392,  1394,  1396,  1400,  1405,  1410,
+  1412,  1414,  1416,  1418,  1422,  1424,  1427,  1429,  1433,  1435,
+  1439,  1442,  1444,  1447,  1449,  1452,  1454,  1457,  1459,  1461,
+  1463,  1467,  1469,  1471,  1474,  1480,  1484,  1490,  1494,  1497,
+  1500,  1502,  1504,  1508,  1510,  1512,  1515,  1521,  1525,  1531,
+  1535,  1538,  1541,  1547,  1550,  1552,  1556,  1559,  1563,  1565,
+  1569,  1577,  1583,  1589,  1591,  1595,  1596,  1597,  1602,  1605,
+  1606,  1608,  1612,  1613,  1617,  1618,  1621,  1625,  1630,  1634,
+  1635,  1637,  1641,  1643,  1645,  1649,  1651,  1653,  1656,  1659,
+  1661,  1664,  1666,  1668,  1670,  1674,  1676,  1678,  1681,  1687,
+  1691,  1697,  1701,  1704,  1707,  1709,  1711,  1713,  1715,  1717,
+  1719,  1721,  1723,  1725,  1727,  1731,  1734,  1738,  1741,  1743,
+  1745,  1747,  1749,  1751,  1753,  1755,  1757,  1759,  1761,  1763,
+  1765,  1767,  1769,  1771,  1773,  1777,  1779,  1781,  1785,  1787,
+  1791,  1793,  1795,  1797,  1799,  1801,  1803,  1807,  1809,  1813,
+  1815,  1819,  1821,  1825,  1827,  1829,  1831,  1835,  1837,  1840,
+  1842,  1844,  1846,  1848,  1851,  1853,  1854,  1856,  1857,  1860,
+  1862
 };
 
-static const short yyrhs[] = {   188,
-   190,   121,     0,     0,   317,   339,   125,   122,    41,   124,
-     0,     0,   123,   124,     0,   340,   192,   207,   217,   343,
-     0,   341,   192,   207,   217,   344,     0,   341,   193,   344,
-     0,   340,   193,   343,     0,   341,   192,   344,     0,   340,
-   192,   343,     0,     0,    24,   126,    25,     0,   127,     0,
-   126,    26,   127,     0,   329,     0,   338,     0,   338,    24,
-    32,    25,     0,   338,    24,   260,    25,     0,   338,    24,
-   258,    25,     0,   338,    24,    25,     0,   338,    32,     0,
+static const short yyrhs[] = {   184,
+   186,   121,     0,     0,   313,   335,   125,   122,    41,   124,
+     0,     0,   123,   124,     0,   336,   188,   203,   213,   339,
+     0,   337,   188,   203,   213,   340,     0,   337,   189,   340,
+     0,   336,   189,   339,     0,   337,   188,   340,     0,   336,
+   188,   339,     0,     0,    24,   126,    25,     0,   127,     0,
+   126,    26,   127,     0,   325,     0,   334,     0,   334,    24,
+    32,    25,     0,   334,    24,   256,    25,     0,   334,    24,
+   254,    25,     0,   334,    24,    25,     0,   334,    32,     0,
     24,   130,    25,     0,    55,    24,   130,    25,     0,    24,
     25,     0,     0,   128,     0,   131,     0,   130,    26,   131,
-     0,   329,     0,   338,     0,   338,    24,    32,    25,     0,
-   338,    24,   260,    25,     0,   338,    24,   258,    25,     0,
-   338,    24,    25,     0,    68,   250,   133,    69,     0,    68,
+     0,   325,     0,   334,     0,   334,    24,    32,    25,     0,
+   334,    24,   256,    25,     0,   334,    24,   254,    25,     0,
+   334,    24,    25,     0,    68,   246,   133,    69,     0,    68,
    133,    69,     0,     0,    73,   134,     0,     0,   135,     0,
-   134,    26,   135,     0,    22,   157,    23,     0,    68,    72,
-    69,     0,     0,    68,   151,    69,     0,     0,    68,   143,
-   143,    69,     0,     0,    68,   140,   143,    69,     0,    68,
-   140,   143,   160,    69,     0,    68,   140,   143,   141,    69,
-     0,     0,    74,   339,     0,     0,    73,   155,     0,    68,
-   143,    69,     0,     0,    71,     0,   144,   145,   146,   147,
-   149,   152,     0,    70,     0,    75,     8,     0,    70,     0,
-    76,     8,     0,    70,     0,    81,     0,    70,     0,    77,
-    89,     0,    77,    11,   148,     0,    18,   143,    19,     0,
-     0,    70,     0,    80,   330,     0,    79,   150,   162,     0,
-   107,     0,   108,     8,     8,     4,     8,     0,   143,     0,
-   151,    26,   143,     0,    70,     0,    73,   153,     0,   154,
-     0,   153,    26,   154,     0,    22,   157,    23,     8,   148,
-     0,   156,     0,   155,    26,   156,     0,    22,   157,    23,
-     8,   148,   159,     0,   158,     0,   157,    26,   158,     0,
-    70,     0,   242,     0,     0,   160,     0,   161,     0,   160,
-    26,   161,     0,   329,    30,   143,     0,    38,   176,    28,
-   162,     0,    88,   181,    28,   162,     0,    89,   331,   183,
-   178,     0,    89,   106,   339,   331,   183,   178,     0,    90,
-   175,   183,   178,     0,    91,   162,   178,     0,    92,   162,
-    18,   185,    19,     0,    42,   162,    43,    18,   163,    19,
-     0,    39,    18,   177,    30,   162,    19,    40,   162,     0,
-    98,    18,   169,    19,    40,   162,     0,    60,    18,   171,
-    19,   162,     0,   309,     0,   174,     0,    95,   164,   168,
-     0,    96,   166,   168,     0,     0,   164,   165,     0,   174,
-   176,    28,   162,    21,     0,     0,   166,   167,     0,   309,
-    28,   162,    21,     0,    97,     0,   177,    28,   162,     0,
-   170,     0,   169,    21,   170,     0,   177,    30,   162,     0,
-   112,   173,     0,   113,    11,    11,   173,     0,   114,    11,
-    11,    11,   173,   172,     0,   115,   174,    11,    11,   173,
-   172,     0,   116,   174,    11,    11,   173,   172,     0,    70,
-     0,   117,     0,    70,     0,   118,     0,    99,   338,   338,
-     0,   100,   338,   329,     0,   101,   338,   329,     0,   102,
-   338,    24,   185,    25,     0,   103,   338,   329,    24,   185,
-    25,     0,   104,   174,    22,   186,    23,     0,   105,   174,
-     0,   106,   339,   329,     0,   106,   339,   331,     0,   329,
-     0,   331,     0,    24,    56,   333,    18,   183,   185,    19,
-    25,     0,    24,    57,   333,    18,   183,   185,    19,    25,
-     0,    24,    58,   309,    18,   183,   185,    19,    25,     0,
-    24,    59,   309,    18,   183,   185,    19,    25,     0,     3,
-     0,     0,   176,   177,     0,    24,     3,    33,   185,    25,
-     0,    22,    23,     0,    22,   179,    23,     0,   180,     0,
-   179,    26,   180,     0,   309,     0,   174,     0,     3,     0,
-   181,     3,     0,    94,     0,   182,    26,    94,     0,    22,
-    23,     0,    22,   184,    23,     0,   185,     0,   184,    26,
-   185,     0,   242,     0,   187,     0,   186,    26,   187,     0,
-    70,     0,   185,     0,     0,   189,   197,     0,     0,   191,
-   197,     0,     0,   193,    21,     0,   194,     0,   193,    21,
-   194,     0,     0,    53,   339,   195,   196,     0,   197,   129,
-     0,   197,   129,    64,   198,     0,   204,    67,     0,    24,
-   199,    25,     0,   200,     0,   199,    26,   200,     0,   329,
-    66,   329,     0,   331,    66,   331,     0,     0,   202,    21,
-     0,   203,     0,   202,    21,   203,     0,   310,   339,    24,
-   130,    25,     0,   310,   339,    24,   130,    25,    64,   198,
-     0,     0,    54,   339,   205,    41,   206,     0,   340,   201,
-   207,   233,   343,     0,   340,   202,   343,     0,   341,   201,
-   207,   233,   344,     0,   341,   202,   344,     0,     0,   208,
-    21,     0,   209,     0,   208,    21,   209,     0,     0,    50,
-     8,   210,   216,     0,     0,    51,     8,   211,   216,     0,
-     0,    49,     8,   212,   216,     0,     0,    50,   213,   216,
-     0,     0,    51,   214,   216,     0,     0,    49,   215,   216,
-     0,   322,     0,   216,    26,   322,     0,   218,     0,   217,
-    21,   218,     0,   219,     0,   220,     0,   221,     0,   223,
-     0,   226,     0,   229,     0,   312,   248,    30,   242,     0,
-   311,   254,    31,   248,    30,   250,     0,   311,   248,    30,
-   250,     0,   311,   254,    31,   248,    30,   250,    65,   252,
-     0,   311,   248,    30,   250,    65,   252,     0,   315,   254,
-    31,   240,   222,     0,   315,   240,   222,     0,     0,    41,
-   340,   228,   343,     0,    41,   341,   228,   344,     0,   313,
-   254,    31,   337,   225,   224,     0,   313,   337,   225,   224,
-     0,     0,    41,   340,   256,   343,     0,    41,   341,   256,
-   344,     0,   338,     0,    24,   249,    25,     0,    24,   334,
-    25,     0,    24,    25,     0,    22,   246,    23,     0,    24,
-   246,    28,   246,    25,     0,   314,   227,     0,    24,   242,
-    26,   241,    25,     0,   245,     0,   229,     0,   228,    21,
-   229,     0,   258,    33,   242,    31,   242,   138,     0,   258,
-    33,   242,   138,     0,    82,   330,    33,   231,    87,     0,
-    82,    47,     4,   225,    87,     0,    82,    45,   338,   244,
-    87,     0,    83,   330,   230,    87,     0,    84,   330,   330,
-    87,     0,    86,   330,    87,     0,    85,   338,    87,     0,
-   261,     0,     0,     0,     4,     0,   232,     0,   231,    26,
-   232,     0,   242,     0,   242,    30,   330,     0,   234,     0,
-   233,    21,   234,     0,   236,     0,   237,     0,   238,     0,
-   239,     0,   235,     0,     0,   258,    33,   242,    31,   242,
-   142,     0,   258,    33,   242,   142,     0,   312,   248,    30,
-   242,   136,     0,   311,   254,    31,   248,   132,     0,   311,
-   248,   132,     0,   311,   254,    31,   248,    30,   250,   132,
-     0,   311,   248,    30,   250,   132,     0,   311,   254,    31,
-   248,    30,   250,    65,   252,     0,   311,   248,    30,   250,
-    65,   252,     0,   315,   254,    31,   240,   137,   222,     0,
-   315,   240,   137,   222,     0,   313,   254,    31,   337,   225,
-   139,     0,   313,   337,   225,   139,     0,   338,   336,     0,
-   242,     0,   241,    26,   242,     0,   243,     0,   243,    28,
-   242,     0,    93,   182,    31,   242,     0,   246,     0,   338,
-   244,     0,   244,   246,     0,   246,     0,   247,     0,   243,
-    28,   242,     0,   338,   244,     0,   247,     0,    24,   242,
-    26,   241,    25,     0,   336,     0,   338,     0,    24,    25,
-     0,    24,   242,    25,     0,    22,   242,    23,     0,    18,
-    18,     4,   242,    19,    19,     0,    94,     0,   338,     0,
-   338,   335,     0,   338,   244,     0,   251,     0,   250,    29,
-   251,     0,   338,   244,     0,    24,     6,    25,   244,     0,
-   338,     0,    24,     6,    25,     0,   243,   325,   243,     0,
-    24,   253,    25,     0,    24,    25,     0,   337,     0,   337,
-     0,   253,    26,   337,     0,    24,   255,    25,     0,   240,
-     0,   240,     0,   255,    26,   240,     0,     0,   257,     0,
-   256,    21,   257,     0,    83,   330,   230,    87,     0,    84,
-   330,   330,    87,     0,   261,     0,   330,    26,   259,     0,
-   330,     0,   329,     0,   259,    26,   329,     0,   331,     0,
-   260,    26,   331,     0,     0,   278,   262,   263,     0,   264,
-   266,     0,   265,     0,    30,   269,     0,   267,    30,   269,
-     0,   267,    30,   269,   265,     0,    41,   340,   228,   343,
-     0,    41,   341,   228,   344,     0,     0,    29,   270,     0,
-   307,   268,     0,   307,     0,   270,    33,   242,    31,   242,
-     0,   270,    33,   242,     0,   270,     0,   271,     0,   270,
-   322,   270,     0,     7,   272,     0,   272,     0,     0,     0,
-    38,   273,   268,   274,    28,   269,     0,    39,   340,   228,
-   343,    40,   269,     0,    39,   341,   228,   344,    40,   269,
-     0,    61,   269,    62,   269,    63,   269,     0,    42,   269,
-    43,   340,   297,   343,     0,    42,   269,    43,   341,   297,
-   344,     0,    56,   333,   276,     0,    56,   333,     0,    57,
-   333,   276,     0,    57,   333,     0,    58,    17,   276,     0,
-    58,    17,     0,    59,    17,   276,     0,    59,    17,     0,
-    60,    11,   269,     0,   275,     0,   275,   277,     0,   277,
-     0,   276,   277,     0,   277,     0,   329,     0,   331,     0,
-   309,     0,    24,   269,    25,     0,    24,   270,   322,    25,
-     0,    24,   321,   270,    25,     0,   286,     0,   288,     0,
-   290,     0,   291,     0,   329,    36,   277,     0,    35,     0,
-    37,   277,     0,   282,     0,   278,   322,   279,     0,   280,
-     0,   279,   322,   279,     0,     7,   281,     0,   281,     0,
-   281,   284,     0,   284,     0,   316,   281,     0,   283,     0,
-   283,   284,     0,   285,     0,   331,     0,   329,     0,   329,
-    36,   307,     0,   309,     0,    35,     0,    24,    25,     0,
-    24,   329,   119,     8,    25,     0,    24,   279,    25,     0,
-    24,   279,    26,   303,    25,     0,    22,   303,    23,     0,
-    22,    23,     0,    37,   307,     0,   332,     0,   330,     0,
-   330,    36,   307,     0,   309,     0,    35,     0,   318,    25,
-     0,   318,   329,   119,     8,    25,     0,   318,   279,    25,
-     0,   318,   279,    26,   303,    25,     0,   319,   303,    23,
-     0,   319,    23,     0,   320,   307,     0,    24,   269,    26,
-   287,    25,     0,    24,    25,     0,   269,     0,   269,    26,
-   287,     0,    22,    23,     0,    22,   289,    23,     0,   269,
-     0,   269,    26,   289,     0,    22,   269,    26,   269,    32,
-   302,    23,     0,    22,   269,    32,   302,    23,     0,    22,
-   269,    29,   292,    23,     0,   293,     0,   292,    26,   293,
-     0,     0,     0,   294,   269,   295,   296,     0,    34,   269,
-     0,     0,   298,     0,   297,    21,   298,     0,     0,   304,
-   299,   300,     0,     0,   301,   266,     0,    28,   269,   266,
-     0,   267,    28,   269,   301,     0,   267,    28,   269,     0,
-     0,   269,     0,   304,    26,   303,     0,   304,     0,   305,
-     0,   304,   325,   305,     0,   308,     0,   306,     0,     7,
-     8,     0,     7,     9,     0,   331,     0,   306,   307,     0,
-   331,     0,   308,     0,   329,     0,   329,    36,   307,     0,
-   309,     0,    35,     0,    24,    25,     0,    24,   329,   119,
-     8,    25,     0,    24,   304,    25,     0,    24,   304,    26,
-   303,    25,     0,    22,   303,    23,     0,    22,    23,     0,
-    37,   307,     0,     8,     0,     9,     0,    10,     0,    11,
-     0,    12,     0,    13,     0,    14,     0,    15,     0,    16,
-     0,    17,     0,    17,    78,     4,     0,   109,     8,     0,
-   110,     8,     8,     0,   111,    11,     0,    53,     0,    45,
-     0,    44,     0,    47,     0,    48,     0,    46,     0,     7,
-     0,    52,     0,    24,     0,    22,     0,    37,     0,   325,
-     0,   324,     0,   325,     0,   323,     0,   326,     0,    27,
-     3,    27,     0,     5,     0,   328,     0,    27,     3,    27,
-     0,     6,     0,    27,     4,    27,     0,     5,     0,   328,
-     0,   327,     0,     7,     0,   119,     0,     3,     0,    24,
-   326,    25,     0,     3,     0,   318,   326,    25,     0,   338,
-     0,    24,     6,    25,     0,   338,     0,   318,     6,    25,
-     0,     3,     0,     4,     0,   246,    26,   246,     0,   246,
-    26,   334,     0,   336,     0,   335,   336,     0,     3,     0,
-   338,     0,     4,     0,     4,     0,   342,    18,     0,   342,
-     0,     0,    19,     0,     0,   345,   346,     0,    20,     0,
-     1,     0
+   134,    26,   135,     0,    22,   154,    23,     0,    68,    72,
+    69,     0,     0,    68,   150,    69,     0,     0,    68,   142,
+   142,    69,     0,     0,    68,   140,   142,    69,     0,    68,
+   140,   142,   156,    69,     0,     0,    74,   335,     0,     0,
+    68,   142,    69,     0,     0,    71,     0,   143,   144,   145,
+   146,   148,   151,     0,    70,     0,    75,     8,     0,    70,
+     0,    76,     8,     0,    70,     0,    81,     0,    70,     0,
+    77,    89,     0,    77,    11,   147,     0,    18,   142,    19,
+     0,     0,    70,     0,    80,   326,     0,    79,   149,   158,
+     0,   107,     0,   108,     8,     8,     4,     8,     0,   142,
+     0,   150,    26,   142,     0,    70,     0,    73,   152,     0,
+   153,     0,   152,    26,   153,     0,    22,   154,    23,     8,
+   147,     0,   155,     0,   154,    26,   155,     0,    70,     0,
+   239,     0,   157,     0,   156,    26,   157,     0,   325,    30,
+    18,   142,    19,     0,   325,    30,   142,     0,    38,   172,
+    28,   158,     0,    88,   177,    28,   158,     0,    89,   327,
+   179,   174,     0,    89,   106,   335,   327,   179,   174,     0,
+    90,   171,   179,   174,     0,    91,   158,   174,     0,    92,
+   158,    18,   181,    19,     0,    42,   158,    43,    18,   159,
+    19,     0,    39,    18,   173,    30,   158,    19,    40,   158,
+     0,    98,    18,   165,    19,    40,   158,     0,    60,    18,
+   167,    19,   158,     0,   305,     0,   170,     0,    95,   160,
+   164,     0,    96,   162,   164,     0,     0,   160,   161,     0,
+   170,   172,    28,   158,    21,     0,     0,   162,   163,     0,
+   305,    28,   158,    21,     0,    97,     0,   173,    28,   158,
+     0,   166,     0,   165,    21,   166,     0,   173,    30,   158,
+     0,   112,   169,     0,   113,    11,    11,   169,     0,   114,
+    11,    11,    11,   169,   168,     0,   115,   170,    11,    11,
+   169,   168,     0,   116,   170,    11,    11,   169,   168,     0,
+    70,     0,   117,     0,    70,     0,   118,     0,    99,   334,
+   334,     0,   100,   334,   325,     0,   101,   334,   325,     0,
+   102,   334,    24,   181,    25,     0,   103,   334,   325,    24,
+   181,    25,     0,   104,   170,    22,   182,    23,     0,   105,
+   170,     0,   106,   335,   325,     0,   106,   335,   327,     0,
+   325,     0,   327,     0,    24,    56,   329,    18,   179,   181,
+    19,    25,     0,    24,    57,   329,    18,   179,   181,    19,
+    25,     0,    24,    58,   305,    18,   179,   181,    19,    25,
+     0,    24,    59,   305,    18,   179,   181,    19,    25,     0,
+     3,     0,     0,   172,   173,     0,    24,     3,    33,   181,
+    25,     0,    22,    23,     0,    22,   175,    23,     0,   176,
+     0,   175,    26,   176,     0,   305,     0,   170,     0,     3,
+     0,   177,     3,     0,    94,     0,   178,    26,    94,     0,
+    22,    23,     0,    22,   180,    23,     0,   181,     0,   180,
+    26,   181,     0,   239,     0,   183,     0,   182,    26,   183,
+     0,    70,     0,   181,     0,     0,   185,   193,     0,     0,
+   187,   193,     0,     0,   189,    21,     0,   190,     0,   189,
+    21,   190,     0,     0,    53,   335,   191,   192,     0,   193,
+   129,     0,   193,   129,    64,   194,     0,   200,    67,     0,
+    24,   195,    25,     0,   196,     0,   195,    26,   196,     0,
+   325,    66,   325,     0,   327,    66,   327,     0,     0,   198,
+    21,     0,   199,     0,   198,    21,   199,     0,   306,   335,
+    24,   130,    25,     0,   306,   335,    24,   130,    25,    64,
+   194,     0,     0,    54,   335,   201,    41,   202,     0,   336,
+   197,   203,   230,   339,     0,   336,   198,   339,     0,   337,
+   197,   203,   230,   340,     0,   337,   198,   340,     0,     0,
+   204,    21,     0,   205,     0,   204,    21,   205,     0,     0,
+    50,     8,   206,   212,     0,     0,    51,     8,   207,   212,
+     0,     0,    49,     8,   208,   212,     0,     0,    50,   209,
+   212,     0,     0,    51,   210,   212,     0,     0,    49,   211,
+   212,     0,   318,     0,   212,    26,   318,     0,   214,     0,
+   213,    21,   214,     0,   215,     0,   216,     0,   217,     0,
+   219,     0,   223,     0,   226,     0,   308,   245,    30,   239,
+     0,   307,   250,    31,   245,    30,   246,     0,   307,   245,
+    30,   246,     0,   307,   250,    31,   245,    30,   246,    65,
+   248,     0,   307,   245,    30,   246,    65,   248,     0,   311,
+   250,    31,   237,   218,     0,   311,   237,   218,     0,     0,
+    41,   336,   225,   339,     0,    41,   337,   225,   340,     0,
+   309,   250,    31,   333,   221,   220,     0,   309,   333,   222,
+   220,     0,     0,    41,   336,   252,   339,     0,    41,   337,
+   252,   340,     0,   334,     0,    24,   334,   331,    25,     0,
+    24,   332,    26,   330,    25,     0,    24,    25,     0,    22,
+   332,    23,     0,    24,   332,    28,   332,    25,     0,   334,
+     0,    24,   334,   241,    25,     0,    24,   239,    26,   238,
+    25,     0,    24,    25,     0,    22,   239,    23,     0,    24,
+   240,    28,   239,    25,     0,   310,   224,     0,    24,   239,
+    26,   238,    25,     0,   242,     0,   226,     0,   225,    21,
+   226,     0,   254,    33,   239,    31,   239,   138,     0,   254,
+    33,   239,   138,     0,    82,   326,    33,   228,    87,     0,
+    82,    47,     4,   222,    87,     0,    82,    45,   334,   241,
+    87,     0,    83,   326,   227,    87,     0,    84,   326,   326,
+    87,     0,    86,   326,    87,     0,    85,   334,    87,     0,
+   257,     0,     0,     0,     4,     0,   229,     0,   228,    26,
+   229,     0,   239,     0,   239,    30,   326,     0,   231,     0,
+   230,    21,   231,     0,   233,     0,   234,     0,   235,     0,
+   236,     0,   232,     0,     0,   254,    33,   239,    31,   239,
+   141,     0,   254,    33,   239,   141,     0,   308,   245,    30,
+   239,   136,     0,   307,   250,    31,   245,   132,     0,   307,
+   245,   132,     0,   307,   250,    31,   245,    30,   246,   132,
+     0,   307,   245,    30,   246,   132,     0,   307,   250,    31,
+   245,    30,   246,    65,   248,     0,   307,   245,    30,   246,
+    65,   248,     0,   311,   250,    31,   237,   137,   218,     0,
+   311,   237,   137,   218,     0,   309,   250,    31,   333,   222,
+   139,     0,   309,   333,   222,   139,     0,   334,   332,     0,
+   239,     0,   238,    26,   239,     0,   240,     0,   240,    28,
+   239,     0,    93,   178,    31,   239,     0,   243,     0,   334,
+   241,     0,   241,   243,     0,   243,     0,   244,     0,   240,
+    28,   239,     0,   334,   241,     0,   244,     0,    24,   239,
+    26,   238,    25,     0,   332,     0,   334,     0,    24,    25,
+     0,    24,   239,    25,     0,    22,   239,    23,     0,    18,
+    18,     4,   239,    19,    19,     0,    94,     0,   334,     0,
+   334,   331,     0,   247,     0,   246,    29,   247,     0,   334,
+   241,     0,    24,     6,    25,   241,     0,   334,     0,    24,
+     6,    25,     0,   240,   321,   240,     0,    24,   249,    25,
+     0,    24,    25,     0,   333,     0,   333,     0,   249,    26,
+   333,     0,    24,   251,    25,     0,   237,     0,   237,     0,
+   251,    26,   237,     0,     0,   253,     0,   252,    21,   253,
+     0,    82,   326,    33,   228,    87,     0,    83,   326,   227,
+    87,     0,    84,   326,   326,    87,     0,   257,     0,   326,
+    26,   255,     0,   326,     0,   325,     0,   255,    26,   325,
+     0,   327,     0,   256,    26,   327,     0,     0,   274,   258,
+   259,     0,   260,   262,     0,   261,     0,    30,   265,     0,
+   263,    30,   265,     0,   263,    30,   265,   261,     0,    41,
+   336,   225,   339,     0,    41,   337,   225,   340,     0,     0,
+    29,   266,     0,   303,   264,     0,   303,     0,   266,    33,
+   239,    31,   239,     0,   266,    33,   239,     0,   266,     0,
+   267,     0,   266,   318,   266,     0,     7,   268,     0,   268,
+     0,     0,     0,    38,   269,   264,   270,    28,   265,     0,
+    39,   336,   225,   339,    40,   265,     0,    39,   337,   225,
+   340,    40,   265,     0,    61,   265,    62,   265,    63,   265,
+     0,    42,   265,    43,   336,   293,   339,     0,    42,   265,
+    43,   337,   293,   340,     0,    56,   329,   272,     0,    56,
+   329,     0,    57,   329,   272,     0,    57,   329,     0,    58,
+    17,   272,     0,    58,    17,     0,    59,    17,   272,     0,
+    59,    17,     0,    60,    11,   265,     0,   271,     0,   271,
+   273,     0,   273,     0,   272,   273,     0,   273,     0,   325,
+     0,   327,     0,   305,     0,    24,   265,    25,     0,    24,
+   266,   318,    25,     0,    24,   317,   266,    25,     0,   282,
+     0,   284,     0,   286,     0,   287,     0,   325,    36,   273,
+     0,    35,     0,    37,   273,     0,   278,     0,   274,   318,
+   275,     0,   276,     0,   275,   318,   275,     0,     7,   277,
+     0,   277,     0,   277,   280,     0,   280,     0,   312,   277,
+     0,   279,     0,   279,   280,     0,   281,     0,   327,     0,
+   325,     0,   325,    36,   303,     0,   305,     0,    35,     0,
+    24,    25,     0,    24,   325,   119,     8,    25,     0,    24,
+   275,    25,     0,    24,   275,    26,   299,    25,     0,    22,
+   299,    23,     0,    22,    23,     0,    37,   303,     0,   328,
+     0,   326,     0,   326,    36,   303,     0,   305,     0,    35,
+     0,   314,    25,     0,   314,   325,   119,     8,    25,     0,
+   314,   275,    25,     0,   314,   275,    26,   299,    25,     0,
+   315,   299,    23,     0,   315,    23,     0,   316,   303,     0,
+    24,   265,    26,   283,    25,     0,    24,    25,     0,   265,
+     0,   265,    26,   283,     0,    22,    23,     0,    22,   285,
+    23,     0,   265,     0,   265,    26,   285,     0,    22,   265,
+    26,   265,    32,   298,    23,     0,    22,   265,    32,   298,
+    23,     0,    22,   265,    29,   288,    23,     0,   289,     0,
+   288,    26,   289,     0,     0,     0,   290,   265,   291,   292,
+     0,    34,   265,     0,     0,   294,     0,   293,    21,   294,
+     0,     0,   300,   295,   296,     0,     0,   297,   262,     0,
+    28,   265,   262,     0,   263,    28,   265,   297,     0,   263,
+    28,   265,     0,     0,   265,     0,   300,    26,   299,     0,
+   300,     0,   301,     0,   300,   321,   301,     0,   304,     0,
+   302,     0,     7,     8,     0,     7,     9,     0,   327,     0,
+   302,   303,     0,   327,     0,   304,     0,   325,     0,   325,
+    36,   303,     0,   305,     0,    35,     0,    24,    25,     0,
+    24,   325,   119,     8,    25,     0,    24,   300,    25,     0,
+    24,   300,    26,   299,    25,     0,    22,   299,    23,     0,
+    22,    23,     0,    37,   303,     0,     8,     0,     9,     0,
+    10,     0,    11,     0,    12,     0,    13,     0,    14,     0,
+    15,     0,    16,     0,    17,     0,    17,    78,     4,     0,
+   109,     8,     0,   110,     8,     8,     0,   111,    11,     0,
+    53,     0,    45,     0,    44,     0,    47,     0,    48,     0,
+    46,     0,     7,     0,    52,     0,    24,     0,    22,     0,
+    37,     0,   321,     0,   320,     0,   321,     0,   319,     0,
+   322,     0,    27,     3,    27,     0,     5,     0,   324,     0,
+    27,     3,    27,     0,     6,     0,    27,     4,    27,     0,
+     5,     0,   324,     0,   323,     0,     7,     0,   119,     0,
+     3,     0,    24,   322,    25,     0,     3,     0,   314,   322,
+    25,     0,   334,     0,    24,     6,    25,     0,   334,     0,
+   314,     6,    25,     0,     3,     0,     4,     0,   332,     0,
+   330,    26,   332,     0,   332,     0,   331,   332,     0,     3,
+     0,   334,     0,     4,     0,     4,     0,   338,    18,     0,
+   338,     0,     0,    19,     0,     0,   341,   342,     0,    20,
+     0,     1,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   331,   334,   336,   337,   339,   342,   346,   351,   355,   361,
-   365,   372,   373,   376,   378,   381,   383,   384,   385,   389,
-   393,   397,   404,   405,   406,   409,   410,   413,   415,   418,
-   420,   421,   422,   426,   430,   438,   441,   443,   446,   449,
-   452,   454,   458,   462,   464,   467,   469,   472,   475,   479,
-   483,   486,   489,   493,   496,   500,   503,   506,   510,   513,
-   517,   519,   522,   524,   527,   529,   532,   534,   537,   541,
-   543,   545,   547,   549,   553,   556,   560,   562,   565,   567,
-   570,   572,   575,   580,   582,   585,   590,   592,   595,   597,
-   600,   602,   605,   607,   610,   619,   622,   624,   626,   628,
-   630,   632,   634,   636,   638,   640,   642,   643,   646,   649,
-   653,   655,   658,   663,   665,   668,   672,   674,   677,   679,
-   682,   686,   688,   689,   691,   693,   696,   697,   699,   700,
-   702,   704,   705,   706,   708,   710,   712,   713,   714,   715,
-   716,   719,   722,   724,   726,   728,   731,   733,   736,   739,
-   741,   744,   746,   749,   751,   754,   756,   759,   761,   764,
-   766,   769,   771,   774,   794,   796,   799,   801,   806,   821,
-   828,   842,   849,   850,   853,   854,   857,   879,   885,   889,
-   893,   901,   904,   906,   909,   910,   913,   914,   917,   918,
-   921,   923,   928,   933,   946,   950,   954,   958,   964,   965,
-   969,   970,   973,   976,   976,   979,   979,   982,   982,   985,
-   985,   988,   988,   991,   993,   994,   997,   998,  1017,  1018,
-  1019,  1020,  1021,  1022,  1025,  1029,  1031,  1033,  1035,  1039,
-  1040,  1043,  1044,  1045,  1048,  1049,  1052,  1053,  1054,  1057,
-  1058,  1060,  1061,  1062,  1063,  1066,  1069,  1070,  1077,  1078,
-  1107,  1112,  1125,  1131,  1137,  1143,  1149,  1155,  1161,  1169,
-  1170,  1173,  1175,  1177,  1179,  1182,  1184,  1186,  1187,  1190,
-  1191,  1192,  1193,  1194,  1195,  1199,  1201,  1205,  1209,  1211,
-  1213,  1215,  1217,  1219,  1223,  1225,  1229,  1231,  1238,  1242,
-  1243,  1246,  1247,  1249,  1252,  1253,  1256,  1257,  1261,  1262,
-  1263,  1266,  1267,  1270,  1271,  1272,  1273,  1274,  1276,  1278,
-  1282,  1283,  1287,  1293,  1294,  1298,  1299,  1300,  1301,  1302,
-  1305,  1306,  1307,  1310,  1311,  1314,  1315,  1318,  1319,  1322,
-  1323,  1324,  1337,  1344,  1350,  1354,  1355,  1359,  1360,  1363,
-  1364,  1368,  1394,  1408,  1411,  1412,  1415,  1416,  1419,  1421,
-  1422,  1425,  1429,  1430,  1439,  1440,  1441,  1450,  1451,  1461,
-  1462,  1469,  1477,  1480,  1486,  1487,  1490,  1493,  1494,  1497,
-  1498,  1499,  1500,  1501,  1502,  1503,  1504,  1507,  1518,  1523,
-  1524,  1527,  1528,  1538,  1539,  1540,  1541,  1542,  1543,  1546,
-  1547,  1548,  1549,  1552,  1553,  1554,  1567,  1568,  1582,  1583,
-  1603,  1604,  1608,  1609,  1612,  1613,  1617,  1618,  1621,  1622,
-  1623,  1624,  1625,  1626,  1627,  1631,  1632,  1633,  1634,  1635,
-  1638,  1639,  1640,  1641,  1642,  1643,  1644,  1648,  1649,  1650,
-  1651,  1652,  1656,  1662,  1671,  1672,  1682,  1683,  1686,  1688,
-  1703,  1704,  1707,  1710,  1711,  1714,  1714,  1715,  1735,  1736,
-  1739,  1740,  1743,  1746,  1749,  1752,  1753,  1756,  1757,  1760,
-  1761,  1764,  1765,  1769,  1770,  1773,  1774,  1775,  1776,  1779,
-  1780,  1783,  1784,  1787,  1788,  1789,  1790,  1791,  1792,  1796,
-  1797,  1798,  1799,  1800,  1803,  1805,  1806,  1807,  1808,  1809,
-  1810,  1811,  1812,  1813,  1814,  1815,  1816,  1817,  1823,  1826,
-  1836,  1846,  1857,  1860,  1870,  1873,  1883,  1886,  1889,  1895,
-  1896,  1899,  1900,  1903,  1904,  1908,  1909,  1910,  1913,  1914,
-  1917,  1918,  1919,  1922,  1925,  1928,  1929,  1932,  1933,  1937,
-  1938,  1941,  1942,  1945,  1946,  1950,  1951,  1955,  1956,  1959,
-  1962,  1968,  1971,  1975,  1977,  1980,  1983,  1991,  1991,  1994,
-  2000
+   329,   332,   334,   335,   337,   340,   344,   349,   353,   359,
+   363,   370,   371,   374,   376,   379,   381,   382,   383,   387,
+   391,   395,   402,   403,   404,   407,   408,   411,   413,   416,
+   418,   419,   420,   424,   428,   436,   439,   441,   444,   447,
+   450,   452,   456,   460,   462,   465,   467,   470,   473,   477,
+   481,   484,   488,   491,   495,   498,   502,   505,   509,   511,
+   514,   516,   519,   521,   524,   526,   529,   533,   535,   537,
+   539,   541,   545,   548,   552,   554,   557,   559,   562,   564,
+   567,   572,   574,   577,   579,   582,   584,   587,   598,   608,
+   611,   613,   615,   617,   619,   621,   623,   625,   627,   629,
+   631,   632,   635,   638,   642,   644,   647,   652,   654,   657,
+   661,   663,   666,   668,   671,   675,   677,   678,   680,   682,
+   685,   686,   688,   689,   691,   693,   694,   695,   697,   699,
+   701,   702,   703,   704,   705,   708,   711,   713,   715,   717,
+   720,   722,   725,   728,   730,   733,   735,   738,   740,   743,
+   745,   748,   750,   753,   755,   758,   760,   763,   783,   785,
+   788,   790,   795,   810,   817,   831,   838,   839,   842,   843,
+   846,   868,   874,   878,   882,   890,   893,   895,   898,   899,
+   902,   903,   906,   907,   910,   912,   917,   922,   935,   939,
+   943,   947,   953,   954,   958,   959,   962,   965,   965,   968,
+   968,   971,   971,   974,   974,   977,   977,   980,   982,   983,
+   986,   987,  1006,  1007,  1008,  1009,  1010,  1011,  1014,  1018,
+  1020,  1022,  1024,  1028,  1029,  1032,  1033,  1034,  1037,  1038,
+  1041,  1042,  1043,  1046,  1047,  1048,  1049,  1050,  1051,  1054,
+  1055,  1056,  1057,  1058,  1059,  1062,  1065,  1066,  1073,  1074,
+  1103,  1108,  1121,  1127,  1133,  1139,  1145,  1151,  1157,  1165,
+  1166,  1169,  1171,  1173,  1175,  1178,  1180,  1182,  1183,  1186,
+  1187,  1188,  1189,  1190,  1191,  1195,  1197,  1201,  1205,  1207,
+  1209,  1211,  1213,  1215,  1219,  1221,  1225,  1227,  1234,  1238,
+  1239,  1242,  1243,  1245,  1248,  1249,  1252,  1253,  1257,  1258,
+  1259,  1262,  1263,  1266,  1267,  1268,  1269,  1270,  1272,  1274,
+  1278,  1279,  1282,  1283,  1287,  1288,  1289,  1290,  1291,  1294,
+  1295,  1296,  1299,  1300,  1303,  1304,  1307,  1308,  1311,  1312,
+  1313,  1326,  1333,  1339,  1345,  1349,  1350,  1353,  1354,  1357,
+  1358,  1362,  1388,  1402,  1405,  1406,  1409,  1410,  1413,  1415,
+  1416,  1419,  1423,  1424,  1434,  1435,  1436,  1445,  1446,  1456,
+  1457,  1464,  1472,  1475,  1481,  1482,  1485,  1488,  1489,  1492,
+  1493,  1494,  1495,  1496,  1497,  1498,  1499,  1502,  1513,  1518,
+  1519,  1522,  1523,  1533,  1534,  1535,  1536,  1537,  1538,  1541,
+  1542,  1543,  1544,  1547,  1548,  1549,  1562,  1563,  1577,  1578,
+  1598,  1599,  1603,  1604,  1607,  1608,  1612,  1613,  1616,  1617,
+  1618,  1619,  1620,  1621,  1622,  1626,  1627,  1628,  1629,  1630,
+  1633,  1634,  1635,  1636,  1637,  1638,  1639,  1643,  1644,  1645,
+  1646,  1647,  1651,  1657,  1666,  1667,  1677,  1678,  1681,  1683,
+  1698,  1699,  1702,  1705,  1706,  1709,  1709,  1710,  1730,  1731,
+  1734,  1735,  1738,  1741,  1744,  1747,  1748,  1751,  1752,  1755,
+  1756,  1759,  1760,  1764,  1765,  1768,  1769,  1770,  1771,  1774,
+  1775,  1778,  1779,  1782,  1783,  1784,  1785,  1786,  1787,  1791,
+  1792,  1793,  1794,  1795,  1798,  1800,  1801,  1802,  1803,  1804,
+  1805,  1806,  1807,  1808,  1809,  1810,  1811,  1812,  1818,  1821,
+  1831,  1841,  1852,  1855,  1865,  1868,  1878,  1881,  1884,  1890,
+  1891,  1894,  1895,  1898,  1899,  1903,  1904,  1905,  1908,  1909,
+  1912,  1913,  1914,  1917,  1920,  1923,  1924,  1927,  1928,  1932,
+  1933,  1936,  1937,  1940,  1941,  1944,  1945,  1948,  1949,  1952,
+  1955,  1961,  1964,  1968,  1970,  1973,  1976,  1984,  1984,  1987,
+  1993
 };
 
 static const char * const yytname[] = {   "$","error","$undefined.","VARID",
@@ -624,24 +624,23 @@ static const char * const yytname[] = {   "$","error","$undefined.","VARID",
 "CO_CAF_CC","CO_DUPD_CC","PLUS","pmodule","module","@1","@2","body","maybeexports",
 "export_list","export","impspec","maybeimpspec","import_list","import","idata_pragma",
 "idata_pragma_specs","idata_pragma_specslist","idata_pragma_spectypes","itype_pragma",
-"iclas_pragma","iclasop_pragma","iinst_pragma","modname_pragma","restof_iinst_spec",
-"ival_pragma","gen_pragma","arity_pragma","update_pragma","deforest_pragma",
-"strictness_pragma","worker_info","unfolding_pragma","unfolding_guidance","gen_pragma_list",
-"type_pragma_pairs_maybe","type_pragma_pairs","type_pragma_pair","type_instpragma_pairs",
-"type_instpragma_pair","type_maybes","type_maybe","maybe_name_pragma_pairs",
-"name_pragma_pairs","name_pragma_pair","core_expr","core_case_alts","core_alg_alts",
-"core_alg_alt","core_prim_alts","core_prim_alt","core_default","corec_binds",
-"corec_bind","co_scc","co_caf","co_dupd","core_id","co_primop","core_binders",
-"core_binder","core_atoms","core_atom_list","core_atom","core_tyvars","core_tv_templates",
-"core_types","core_type_list","core_type","core_type_maybes","core_type_maybe",
-"readpreludecore","@3","readprelude","@4","maybeimpdecls","impdecls","impdecl",
-"@5","impdecl_rest","readinterface","renamings","renaming_list","renaming","maybeiimports",
-"iimports","iimport","interface","@6","ibody","maybefixes","fixes","fix","@7",
-"@8","@9","@10","@11","@12","ops","topdecls","topdecl","typed","datad","classd",
-"cbody","instd","rinst","inst","defaultd","dtypes","decls","decl","howto_inline_maybe",
-"types_and_maybe_ids","type_and_maybe_id","itopdecls","itopdecl","ivarsd","ityped",
-"idatad","iclassd","iinstd","class","types","type","btype","atypes","ttype",
-"atype","ntatype","simple","simple_long","constrs","constr","tyclses","tycls_list",
+"iclas_pragma","iclasop_pragma","iinst_pragma","modname_pragma","ival_pragma",
+"gen_pragma","arity_pragma","update_pragma","deforest_pragma","strictness_pragma",
+"worker_info","unfolding_pragma","unfolding_guidance","gen_pragma_list","type_pragma_pairs_maybe",
+"type_pragma_pairs","type_pragma_pair","type_maybes","type_maybe","name_pragma_pairs",
+"name_pragma_pair","core_expr","core_case_alts","core_alg_alts","core_alg_alt",
+"core_prim_alts","core_prim_alt","core_default","corec_binds","corec_bind","co_scc",
+"co_caf","co_dupd","core_id","co_primop","core_binders","core_binder","core_atoms",
+"core_atom_list","core_atom","core_tyvars","core_tv_templates","core_types",
+"core_type_list","core_type","core_type_maybes","core_type_maybe","readpreludecore",
+"@3","readprelude","@4","maybeimpdecls","impdecls","impdecl","@5","impdecl_rest",
+"readinterface","renamings","renaming_list","renaming","maybeiimports","iimports",
+"iimport","interface","@6","ibody","maybefixes","fixes","fix","@7","@8","@9",
+"@10","@11","@12","ops","topdecls","topdecl","typed","datad","classd","cbody",
+"instd","rinst","restrict_inst","general_inst","defaultd","dtypes","decls","decl",
+"howto_inline_maybe","types_and_maybe_ids","type_and_maybe_id","itopdecls","itopdecl",
+"ivarsd","ityped","idatad","iclassd","iinstd","class","types","type","btype",
+"atypes","ttype","atype","ntatype","simple","constrs","constr","tyclses","tycls_list",
 "context","context_list","instdefs","instdef","vars","varsrest","cons","valdef",
 "@13","valrhs","valrhs1","gdrhs","maybe_where","gd","lampats","exp","oexp","dexp",
 "kexp","@14","@15","fexp","cexp","aexp","opatk","opat","dpat","fpat","dpatk",
@@ -650,7 +649,7 @@ static const char * const yytname[] = {   "$","error","$undefined.","VARID",
 "pats","pat","bpat","conpat","apat","apatc","lit_constant","importkey","datakey",
 "typekey","instkey","defaultkey","classkey","minuskey","modulekey","oparenkey",
 "obrackkey","lazykey","op1","op","varop","varop1","conop","varsym","minus","plus",
-"var","vark","con","conk","ccallid","atype_list","tyvars","tyvar","tycls","tycon",
+"var","vark","con","conk","ccallid","tyvar_list","tyvars","tyvar","tycls","tycon",
 "modid","ocurly","vocurly","layout","ccurly","vccurly","@19","vccurly1",""
 };
 #endif
@@ -661,57 +660,57 @@ static const short yyr1[] = {     0,
    127,   127,   128,   128,   128,   129,   129,   130,   130,   131,
    131,   131,   131,   131,   131,   132,   132,   132,   133,   133,
    134,   134,   135,   136,   136,   137,   137,   138,   138,   139,
-   139,   139,   139,   140,   140,   141,   142,   142,   143,   143,
-   144,   144,   145,   145,   146,   146,   147,   147,   147,   148,
-   148,   149,   149,   149,   150,   150,   151,   151,   152,   152,
-   153,   153,   154,   155,   155,   156,   157,   157,   158,   158,
-   159,   159,   160,   160,   161,   162,   162,   162,   162,   162,
-   162,   162,   162,   162,   162,   162,   162,   162,   163,   163,
-   164,   164,   165,   166,   166,   167,   168,   168,   169,   169,
-   170,   171,   171,   171,   171,   171,   172,   172,   173,   173,
-   174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
-   174,   175,   175,   175,   175,   175,   176,   176,   177,   178,
-   178,   179,   179,   180,   180,   181,   181,   182,   182,   183,
-   183,   184,   184,   185,   186,   186,   187,   187,   189,   188,
-   191,   190,   192,   192,   193,   193,   195,   194,   196,   196,
-   197,   198,   199,   199,   200,   200,   201,   201,   202,   202,
-   203,   203,   205,   204,   206,   206,   206,   206,   207,   207,
-   208,   208,   210,   209,   211,   209,   212,   209,   213,   209,
-   214,   209,   215,   209,   216,   216,   217,   217,   218,   218,
-   218,   218,   218,   218,   219,   220,   220,   220,   220,   221,
-   221,   222,   222,   222,   223,   223,   224,   224,   224,   225,
-   225,   225,   225,   225,   225,   226,   227,   227,   228,   228,
-   229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
-   229,   230,   230,   231,   231,   232,   232,   233,   233,   234,
-   234,   234,   234,   234,   234,   235,   235,   236,   237,   237,
-   237,   237,   237,   237,   238,   238,   239,   239,   240,   241,
-   241,   242,   242,   242,   243,   243,   244,   244,   245,   245,
-   245,   246,   246,   247,   247,   247,   247,   247,   247,   247,
-   248,   248,   249,   250,   250,   251,   251,   251,   251,   251,
-   252,   252,   252,   253,   253,   254,   254,   255,   255,   256,
-   256,   256,   257,   257,   257,   258,   258,   259,   259,   260,
-   260,   262,   261,   263,   264,   264,   265,   265,   266,   266,
-   266,   267,   268,   268,   269,   269,   269,   270,   270,   271,
-   271,   273,   274,   272,   272,   272,   272,   272,   272,   272,
-   272,   272,   272,   272,   272,   272,   272,   272,   272,   275,
-   275,   276,   276,   277,   277,   277,   277,   277,   277,   277,
-   277,   277,   277,   277,   277,   277,   278,   278,   279,   279,
-   280,   280,   281,   281,   282,   282,   283,   283,   284,   284,
-   284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
-   285,   285,   285,   285,   285,   285,   285,   285,   285,   285,
-   285,   285,   286,   286,   287,   287,   288,   288,   289,   289,
-   290,   290,   291,   292,   292,   294,   295,   293,   296,   296,
-   297,   297,   299,   298,   298,   300,   300,   301,   301,   302,
-   302,   303,   303,   304,   304,   305,   305,   305,   305,   306,
-   306,   307,   307,   308,   308,   308,   308,   308,   308,   308,
-   308,   308,   308,   308,   309,   309,   309,   309,   309,   309,
-   309,   309,   309,   309,   309,   309,   309,   309,   310,   311,
-   312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
-   321,   322,   322,   323,   323,   324,   324,   324,   325,   325,
-   326,   326,   326,   327,   328,   329,   329,   330,   330,   331,
-   331,   332,   332,   333,   333,   334,   334,   335,   335,   336,
-   337,   338,   339,   340,   341,   342,   343,   345,   344,   346,
-   346
+   139,   139,   140,   140,   141,   141,   142,   142,   143,   143,
+   144,   144,   145,   145,   146,   146,   146,   147,   147,   148,
+   148,   148,   149,   149,   150,   150,   151,   151,   152,   152,
+   153,   154,   154,   155,   155,   156,   156,   157,   157,   158,
+   158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+   158,   158,   159,   159,   160,   160,   161,   162,   162,   163,
+   164,   164,   165,   165,   166,   167,   167,   167,   167,   167,
+   168,   168,   169,   169,   170,   170,   170,   170,   170,   170,
+   170,   170,   170,   170,   170,   171,   171,   171,   171,   171,
+   172,   172,   173,   174,   174,   175,   175,   176,   176,   177,
+   177,   178,   178,   179,   179,   180,   180,   181,   182,   182,
+   183,   183,   185,   184,   187,   186,   188,   188,   189,   189,
+   191,   190,   192,   192,   193,   194,   195,   195,   196,   196,
+   197,   197,   198,   198,   199,   199,   201,   200,   202,   202,
+   202,   202,   203,   203,   204,   204,   206,   205,   207,   205,
+   208,   205,   209,   205,   210,   205,   211,   205,   212,   212,
+   213,   213,   214,   214,   214,   214,   214,   214,   215,   216,
+   216,   216,   216,   217,   217,   218,   218,   218,   219,   219,
+   220,   220,   220,   221,   221,   221,   221,   221,   221,   222,
+   222,   222,   222,   222,   222,   223,   224,   224,   225,   225,
+   226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
+   226,   227,   227,   228,   228,   229,   229,   230,   230,   231,
+   231,   231,   231,   231,   231,   232,   232,   233,   234,   234,
+   234,   234,   234,   234,   235,   235,   236,   236,   237,   238,
+   238,   239,   239,   239,   240,   240,   241,   241,   242,   242,
+   242,   243,   243,   244,   244,   244,   244,   244,   244,   244,
+   245,   245,   246,   246,   247,   247,   247,   247,   247,   248,
+   248,   248,   249,   249,   250,   250,   251,   251,   252,   252,
+   252,   253,   253,   253,   253,   254,   254,   255,   255,   256,
+   256,   258,   257,   259,   260,   260,   261,   261,   262,   262,
+   262,   263,   264,   264,   265,   265,   265,   266,   266,   267,
+   267,   269,   270,   268,   268,   268,   268,   268,   268,   268,
+   268,   268,   268,   268,   268,   268,   268,   268,   268,   271,
+   271,   272,   272,   273,   273,   273,   273,   273,   273,   273,
+   273,   273,   273,   273,   273,   273,   274,   274,   275,   275,
+   276,   276,   277,   277,   278,   278,   279,   279,   280,   280,
+   280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+   281,   281,   281,   281,   281,   281,   281,   281,   281,   281,
+   281,   281,   282,   282,   283,   283,   284,   284,   285,   285,
+   286,   286,   287,   288,   288,   290,   291,   289,   292,   292,
+   293,   293,   295,   294,   294,   296,   296,   297,   297,   298,
+   298,   299,   299,   300,   300,   301,   301,   301,   301,   302,
+   302,   303,   303,   304,   304,   304,   304,   304,   304,   304,
+   304,   304,   304,   304,   305,   305,   305,   305,   305,   305,
+   305,   305,   305,   305,   305,   305,   305,   305,   306,   307,
+   308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
+   317,   318,   318,   319,   319,   320,   320,   320,   321,   321,
+   322,   322,   322,   323,   324,   325,   325,   326,   326,   327,
+   327,   328,   328,   329,   329,   330,   330,   331,   331,   332,
+   333,   334,   335,   336,   337,   338,   339,   341,   340,   342,
+   342
 };
 
 static const short yyr2[] = {     0,
@@ -720,35 +719,35 @@ static const short yyr2[] = {     0,
      3,     2,     3,     4,     2,     0,     1,     1,     3,     1,
      1,     4,     4,     4,     3,     4,     3,     0,     2,     0,
      1,     3,     3,     3,     0,     3,     0,     4,     0,     4,
-     5,     5,     0,     2,     0,     2,     3,     0,     1,     6,
-     1,     2,     1,     2,     1,     1,     1,     2,     3,     3,
-     0,     1,     2,     3,     1,     5,     1,     3,     1,     2,
-     1,     3,     5,     1,     3,     6,     1,     3,     1,     1,
-     0,     1,     1,     3,     3,     4,     4,     4,     6,     4,
-     3,     5,     6,     8,     6,     5,     1,     1,     3,     3,
-     0,     2,     5,     0,     2,     4,     1,     3,     1,     3,
-     3,     2,     4,     6,     6,     6,     1,     1,     1,     1,
-     3,     3,     3,     5,     6,     5,     2,     3,     3,     1,
-     1,     8,     8,     8,     8,     1,     0,     2,     5,     2,
-     3,     1,     3,     1,     1,     1,     2,     1,     3,     2,
-     3,     1,     3,     1,     1,     3,     1,     1,     0,     2,
-     0,     2,     0,     2,     1,     3,     0,     4,     2,     4,
-     2,     3,     1,     3,     3,     3,     0,     2,     1,     3,
-     5,     7,     0,     5,     5,     3,     5,     3,     0,     2,
-     1,     3,     0,     4,     0,     4,     0,     4,     0,     3,
-     0,     3,     0,     3,     1,     3,     1,     3,     1,     1,
-     1,     1,     1,     1,     4,     6,     4,     8,     6,     5,
-     3,     0,     4,     4,     6,     4,     0,     4,     4,     1,
-     3,     3,     2,     3,     5,     2,     5,     1,     1,     3,
+     5,     0,     2,     0,     3,     0,     1,     6,     1,     2,
+     1,     2,     1,     1,     1,     2,     3,     3,     0,     1,
+     2,     3,     1,     5,     1,     3,     1,     2,     1,     3,
+     5,     1,     3,     1,     1,     1,     3,     5,     3,     4,
+     4,     4,     6,     4,     3,     5,     6,     8,     6,     5,
+     1,     1,     3,     3,     0,     2,     5,     0,     2,     4,
+     1,     3,     1,     3,     3,     2,     4,     6,     6,     6,
+     1,     1,     1,     1,     3,     3,     3,     5,     6,     5,
+     2,     3,     3,     1,     1,     8,     8,     8,     8,     1,
+     0,     2,     5,     2,     3,     1,     3,     1,     1,     1,
+     2,     1,     3,     2,     3,     1,     3,     1,     1,     3,
+     1,     1,     0,     2,     0,     2,     0,     2,     1,     3,
+     0,     4,     2,     4,     2,     3,     1,     3,     3,     3,
+     0,     2,     1,     3,     5,     7,     0,     5,     5,     3,
+     5,     3,     0,     2,     1,     3,     0,     4,     0,     4,
+     0,     4,     0,     3,     0,     3,     0,     3,     1,     3,
+     1,     3,     1,     1,     1,     1,     1,     1,     4,     6,
+     4,     8,     6,     5,     3,     0,     4,     4,     6,     4,
+     0,     4,     4,     1,     4,     5,     2,     3,     5,     1,
+     4,     5,     2,     3,     5,     2,     5,     1,     1,     3,
      6,     4,     5,     5,     5,     4,     4,     3,     3,     1,
      0,     0,     1,     1,     3,     1,     3,     1,     3,     1,
      1,     1,     1,     1,     0,     6,     4,     5,     5,     3,
      7,     5,     8,     6,     6,     4,     6,     4,     2,     1,
      3,     1,     3,     4,     1,     2,     2,     1,     1,     3,
      2,     1,     5,     1,     1,     2,     3,     3,     6,     1,
-     1,     2,     2,     1,     3,     2,     4,     1,     3,     3,
-     3,     2,     1,     1,     3,     3,     1,     1,     3,     0,
-     1,     3,     4,     4,     1,     3,     1,     1,     3,     1,
+     1,     2,     1,     3,     2,     4,     1,     3,     3,     3,
+     2,     1,     1,     3,     3,     1,     1,     3,     0,     1,
+     3,     5,     4,     4,     1,     3,     1,     1,     3,     1,
      3,     0,     3,     2,     1,     2,     3,     4,     4,     4,
      0,     2,     2,     1,     5,     3,     1,     1,     3,     2,
      1,     0,     0,     6,     6,     6,     6,     6,     6,     3,
@@ -768,837 +767,847 @@ static const short yyr2[] = {     0,
      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
      1,     1,     1,     1,     3,     1,     1,     3,     1,     3,
      1,     1,     1,     1,     1,     1,     3,     1,     3,     1,
-     3,     1,     3,     1,     1,     3,     3,     1,     2,     1,
+     3,     1,     3,     1,     1,     1,     3,     1,     2,     1,
      1,     1,     1,     2,     1,     0,     1,     0,     2,     1,
      1
 };
 
-static const short yydefact[] = {   169,
-   171,     0,     4,     0,     0,   170,     0,   506,     1,   546,
-     0,   172,   543,   193,   181,     5,   173,   173,   545,    12,
-     0,     0,   199,     0,   175,   199,   548,   544,     0,     2,
-   546,   177,   547,   213,   209,   211,   261,     0,   201,    11,
-   174,     9,   261,    10,     0,     8,   526,   542,     0,     0,
-    14,    16,    17,     0,   194,   187,   187,     0,   207,     0,
-   203,     0,   205,     0,   528,   505,   485,   486,   487,   488,
+static const short yydefact[] = {   163,
+   165,     0,     4,     0,     0,   164,     0,   506,     1,   546,
+     0,   166,   543,   187,   175,     5,   167,   167,   545,    12,
+     0,     0,   193,     0,   169,   193,   548,   544,     0,     2,
+   546,   171,   547,   207,   203,   205,   261,     0,   195,    11,
+   168,     9,   261,    10,     0,     8,   526,   542,     0,     0,
+    14,    16,    17,     0,   188,   181,   181,     0,   201,     0,
+   197,     0,   199,     0,   528,   505,   485,   486,   487,   488,
    489,   490,   491,   492,   493,   494,   508,   507,   425,   509,
    501,   500,   504,   502,   503,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   217,   219,   220,   221,   222,   223,
-   224,     0,   260,   342,   397,   406,   408,   424,     0,     0,
+     0,     0,     0,     0,   211,   213,   214,   215,   216,   217,
+   218,     0,   260,   342,   397,   406,   408,   424,     0,     0,
      0,     0,     0,     0,     0,     0,     0,   422,   421,   532,
-   200,   176,   548,   551,   550,   549,   521,   524,   525,     0,
-   523,   522,    13,     0,     0,    22,   546,   499,   199,     0,
-   189,     0,   199,   548,   178,    26,     0,   519,     0,   214,
-   215,   513,   512,   514,     0,   210,     0,   212,     0,     0,
+   194,   170,   548,   551,   550,   549,   521,   524,   525,     0,
+   523,   522,    13,     0,     0,    22,   546,   499,   193,     0,
+   183,     0,   193,   548,   172,    26,     0,   519,     0,   208,
+   209,   513,   512,   514,     0,   204,     0,   206,     0,     0,
      0,     0,     0,   262,     0,     0,     0,   496,     0,   498,
    261,     6,     0,     0,     0,     0,     0,   413,     0,   407,
-   412,   410,   409,   530,     0,   327,     0,     0,   311,     0,
+   412,   410,   409,   530,     0,   326,     0,     0,   311,     0,
    311,     0,     0,   541,   540,     0,     0,     0,   310,   246,
-     0,   248,   295,   299,   304,   305,   232,     0,     0,   405,
+     0,   248,   295,   299,   304,   305,   226,     0,     0,   405,
    404,     0,   524,   426,     0,   399,   402,     0,   410,     0,
      0,   431,     0,   477,     0,     0,   463,   464,   467,   466,
-   476,   474,   470,   432,   473,   472,     0,     0,   202,     7,
+   476,   474,   470,   432,   473,   472,     0,     0,   196,     7,
    527,    15,   507,    21,     0,     0,     0,   337,   340,     3,
-   275,   188,   196,     0,   275,   198,     0,     0,    27,   179,
-   208,     0,     0,     0,   204,   206,   495,     0,     0,     0,
-   263,     0,     0,   259,   258,   497,   218,     0,     0,    49,
+   275,   182,   190,     0,   275,   192,     0,     0,    27,   173,
+   202,     0,     0,     0,   198,   200,   495,     0,     0,     0,
+   263,     0,     0,   259,   258,   497,   212,     0,     0,    49,
    292,   302,   305,     0,     0,   343,   351,   345,     0,     0,
-   398,   419,     0,     0,   414,     0,   410,   420,     0,   328,
+   398,   419,     0,     0,   414,     0,   410,   420,     0,   327,
      0,     0,     0,   312,   538,     0,   538,     0,     0,     0,
-   237,   240,   289,     0,     0,   306,     0,     0,   301,   298,
-   305,   546,   231,     0,   403,   533,   401,   428,     0,     0,
+   231,   240,   289,     0,     0,   306,     0,     0,   301,   298,
+   305,   546,   225,     0,   403,   533,   401,   428,     0,     0,
    529,     0,   468,   469,   483,     0,   524,   478,     0,   474,
    484,   430,     0,     0,     0,   471,     0,   336,   338,   423,
     18,    20,    19,     0,     0,   268,   274,   270,   271,   272,
-   273,     0,     0,     0,     0,     0,   190,     0,   548,    25,
-     0,    28,    30,    31,     0,     0,   515,   520,   216,     0,
-     0,     0,   264,   266,   256,   257,     0,   158,     0,     0,
+   273,     0,     0,     0,     0,     0,   184,     0,   548,    25,
+     0,    28,    30,    31,     0,     0,   515,   520,   210,     0,
+     0,     0,   264,   266,   256,   257,     0,   152,     0,     0,
      0,   252,     0,   296,     0,     0,     0,   395,     0,   362,
    546,     0,     0,     0,     0,     0,     0,     0,   352,   358,
    361,   379,   381,   390,   391,   392,   393,   386,   384,   385,
    346,   357,   546,   344,     0,   418,   531,   416,     0,     0,
-   411,   326,     0,     0,     0,   227,   314,   318,     0,   539,
-   225,     0,   541,     0,   243,     0,     0,     0,   305,   546,
-   236,     0,   308,   307,     0,   300,   297,   261,   261,   232,
-     0,   400,     0,   482,   480,     0,     0,   462,   465,   475,
-     0,     0,   341,   275,   195,     0,    38,     0,     0,     0,
-     0,    47,     0,     0,   197,    23,     0,     0,     0,     0,
-   180,   255,   254,     0,   253,     0,     0,     0,     0,    49,
-    61,    59,     0,     0,     0,   293,   360,   437,   439,     0,
-   516,   519,   524,   434,     0,     0,   357,     0,   511,   510,
-   517,   396,     0,   261,   261,     0,   534,   535,   371,   373,
-   375,   377,     0,     0,     0,   380,     0,     0,   261,   261,
-   347,     0,     0,   329,     0,     0,     0,     0,   316,     0,
-   237,   244,     0,     0,   241,   242,   313,   330,   330,     0,
-     0,   290,     0,   249,   548,   230,   429,   427,     0,     0,
-   339,   269,    58,     0,    40,   280,     0,     0,     0,    53,
-     0,   232,     0,   191,    29,    35,     0,     0,     0,    24,
-     0,     0,   183,     0,     0,   265,   267,     0,   159,   294,
-   251,    62,     0,    63,     0,     0,     0,   446,   460,   438,
+   411,   325,     0,     0,     0,   221,   313,   317,     0,   539,
+   219,     0,   541,     0,   243,     0,   292,   305,   546,   230,
+     0,   308,   307,     0,   300,   297,   261,   261,   226,     0,
+   400,     0,   482,   480,     0,     0,   462,   465,   475,     0,
+     0,   341,   275,   189,     0,    38,     0,     0,     0,     0,
+    47,     0,     0,   191,    23,     0,     0,     0,     0,   174,
+   255,   254,     0,   253,     0,     0,     0,     0,    49,    59,
+    57,     0,     0,     0,   293,   360,   437,   439,     0,   516,
+   519,   524,   434,     0,     0,   357,     0,   511,   510,   517,
+   396,     0,   261,   261,     0,   534,   535,   371,   373,   375,
+   377,     0,     0,     0,   380,     0,     0,   261,   261,   347,
+     0,     0,   328,     0,     0,     0,     0,   315,     0,     0,
+     0,   231,   234,   244,     0,     0,   296,   329,   329,     0,
+     0,   290,     0,   249,   548,   224,   429,   427,     0,     0,
+   339,   269,    56,     0,    40,   280,     0,     0,     0,    52,
+     0,   226,     0,   185,    29,    35,     0,     0,     0,    24,
+     0,     0,   177,     0,     0,   265,   267,     0,   153,   294,
+   251,    60,     0,    61,     0,     0,     0,   446,   460,   438,
      0,   387,     0,     0,     0,   363,   354,     0,   548,   546,
    370,   383,   372,   374,   376,   378,     0,   359,   394,   356,
-     0,   548,   348,   417,   415,   319,   320,   315,     0,   229,
-   323,   226,   235,   536,   537,     0,     0,     0,     0,   331,
-   335,   422,   548,     0,   247,     0,   261,   233,   234,   481,
-   479,     0,     0,   277,    38,     0,     0,    40,    38,    45,
-     0,    55,   288,    77,     0,   286,    47,     0,    32,    34,
-    33,   182,     0,     0,     0,   303,    48,    64,    65,    66,
-     0,   439,   440,     0,   444,     0,   461,     0,   518,   435,
-     0,   388,   389,     0,   353,     0,     0,   455,   455,   382,
-     0,     0,   349,   350,   317,   322,     0,   324,     0,   245,
-   262,     0,     0,   238,   239,   309,   291,   250,    58,     0,
-     0,   282,     0,    39,    41,    37,     0,     0,   279,     0,
-   278,    53,     0,     0,     0,    46,   232,   192,   184,   185,
-   186,    67,     0,     0,     0,   460,   443,   446,   447,   442,
-     0,   433,     0,     0,     0,     0,   451,   453,   548,     0,
-   355,   321,     0,   228,     0,     0,   332,   276,    57,   284,
-    89,     0,    87,    90,     0,    36,    38,     0,   287,    54,
-     0,    78,   285,    71,    68,    72,     0,     0,     0,   439,
-     0,   445,   450,   436,   364,   365,   366,   455,   368,     0,
-   369,   367,   325,   333,   334,    43,     0,    42,     0,   281,
-    44,    50,     0,     0,     0,    93,     0,     0,    69,    75,
-     0,     0,    73,    79,     0,    60,   441,     0,   448,   452,
-     0,     0,   454,   351,    88,   283,     0,    56,    84,    52,
-     0,    51,     0,     0,     0,   147,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    74,   108,   107,   140,   141,     0,    80,
-    81,   449,   351,     0,   456,     0,     0,    94,    95,    70,
-     0,     0,     0,     0,     0,   156,     0,     0,     0,   146,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   137,     0,     0,     0,   457,   459,     0,    85,     0,
-     0,     0,   148,     0,     0,     0,     0,     0,     0,     0,
-     0,   157,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   101,     0,     0,   119,     0,   131,   132,   133,
-     0,     0,     0,   138,   139,     0,    82,   458,    71,    76,
-     0,    96,     0,     0,   129,   130,   122,     0,     0,     0,
-     0,     0,    97,     0,   160,     0,   162,   164,    98,     0,
-     0,     0,     0,   100,   150,   155,     0,   152,   154,     0,
-     0,     0,     0,     0,     0,   167,   168,     0,   165,    71,
-    91,     0,     0,   111,   114,     0,     0,     0,     0,     0,
-   106,     0,   161,     0,     0,     0,     0,     0,   151,     0,
-   102,     0,   120,   121,   134,     0,   136,     0,    83,    86,
-    92,     0,     0,     0,     0,   103,   123,     0,     0,     0,
-    99,   163,     0,     0,     0,     0,   153,   105,   135,   166,
-   149,     0,     0,   117,   112,   109,   147,     0,   115,   110,
-     0,     0,     0,     0,     0,     0,     0,     0,   104,     0,
-     0,     0,   127,   128,   124,   125,   126,     0,     0,     0,
-     0,     0,   118,     0,   142,   143,   144,   145,     0,   116,
-   113,     0,     0,     0
+     0,   548,   348,   417,   415,   318,   319,   314,     0,   223,
+   322,   220,     0,   237,     0,     0,   229,     0,   293,   241,
+     0,     0,     0,     0,   330,   335,   422,   548,     0,   247,
+     0,   261,   227,   228,   481,   479,     0,     0,   277,    38,
+     0,     0,    40,    38,    45,     0,    54,   288,    75,     0,
+   286,    47,     0,    32,    34,    33,   176,     0,     0,     0,
+   303,    48,    62,    63,    64,     0,   439,   440,     0,   444,
+     0,   461,     0,   518,   435,     0,   388,   389,     0,   353,
+     0,     0,   455,   455,   382,     0,     0,   349,   350,   316,
+   321,     0,   323,     0,   238,     0,     0,     0,   242,   245,
+     0,   262,     0,     0,   232,   233,   309,   291,   250,    56,
+     0,     0,   282,     0,    39,    41,    37,     0,     0,   279,
+     0,   278,    52,     0,     0,     0,    46,   226,   186,   178,
+   179,   180,    65,     0,     0,     0,   460,   443,   446,   447,
+   442,     0,   433,     0,     0,     0,     0,   451,   453,   548,
+     0,   355,   320,     0,   222,     0,   536,     0,   235,     0,
+     0,     0,   331,   276,    55,   284,    84,     0,    82,    85,
+     0,    36,    38,     0,   287,    53,     0,    76,   285,    69,
+    66,    70,     0,     0,     0,   439,     0,   445,   450,   436,
+   364,   365,   366,   455,   368,     0,   369,   367,   324,   236,
+     0,   239,     0,   333,   334,    43,     0,    42,     0,   281,
+    44,    50,     0,    86,     0,     0,    67,    73,     0,     0,
+    71,    77,     0,    58,   441,     0,   448,   452,     0,     0,
+   454,   351,   537,   332,    83,   283,     0,    51,     0,     0,
+     0,   141,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    72,
+   102,   101,   134,   135,     0,    78,    79,   449,   351,     0,
+   456,    87,     0,    89,    68,     0,     0,     0,     0,     0,
+   150,     0,     0,     0,   140,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   131,     0,     0,     0,
+   457,   459,     0,     0,     0,     0,   142,     0,     0,     0,
+     0,     0,     0,     0,     0,   151,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    95,     0,     0,   113,
+     0,   125,   126,   127,     0,     0,     0,   132,   133,     0,
+    80,   458,    88,    74,     0,    90,     0,     0,   123,   124,
+   116,     0,     0,     0,     0,     0,    91,     0,   154,     0,
+   156,   158,    92,     0,     0,     0,     0,    94,   144,   149,
+     0,   146,   148,     0,     0,     0,     0,     0,     0,   161,
+   162,     0,   159,    69,     0,     0,   105,   108,     0,     0,
+     0,     0,     0,   100,     0,   155,     0,     0,     0,     0,
+     0,   145,     0,    96,     0,   114,   115,   128,     0,   130,
+     0,    81,     0,     0,     0,     0,    97,   117,     0,     0,
+     0,    93,   157,     0,     0,     0,     0,   147,    99,   129,
+   160,   143,     0,     0,   111,   106,   103,   141,     0,   109,
+   104,     0,     0,     0,     0,     0,     0,     0,     0,    98,
+     0,     0,     0,   121,   122,   118,   119,   120,     0,     0,
+     0,     0,     0,   112,     0,   136,   137,   138,   139,     0,
+   110,   107,     0,     0,     0
 };
 
-static const short yydefgoto[] = {  1092,
+static const short yydefgoto[] = {  1103,
      9,    54,    10,    16,    30,    50,    51,   259,   260,   371,
-   372,   576,   667,   734,   735,   741,   582,   392,   673,   744,
-   824,   664,   504,   505,   606,   691,   754,   829,   799,   832,
-   675,   836,   880,   881,   848,   849,   782,   783,  1030,   825,
-   826,   874,  1006,  1034,  1055,  1035,  1059,  1056,   945,   946,
-   931,  1075,   967,   875,   902,   892,   923,   943,   987,   988,
-   897,   389,   936,   976,   997,   998,   999,     1,     2,     3,
-     4,    23,    24,    25,    58,   145,     6,   491,   592,   593,
-   139,   140,   141,     7,    21,    55,    37,    38,    39,   155,
-   157,   147,    62,    64,    60,   150,    94,    95,    96,    97,
-    98,   323,    99,   451,   311,   100,   200,   563,   564,   272,
-   382,   383,   355,   356,   357,   358,   359,   360,   361,   186,
-   561,   978,   281,   319,   202,   203,   282,   187,   447,   436,
-   437,   640,   717,   188,   301,   649,   650,   102,   348,   247,
-   103,   174,   286,   287,   288,   424,   289,   616,   697,   422,
-   410,   411,   523,   704,   412,   621,   413,   104,   215,   216,
-   217,   105,   106,   211,   107,   414,   701,   415,   693,   416,
-   417,   694,   695,   696,   803,   839,   766,   767,   810,   843,
-   844,   698,   226,   227,   228,   229,   617,   230,   418,   142,
-   109,   110,   111,   112,   113,   114,    11,   162,   116,   117,
-   518,   151,   152,   519,   153,   154,   131,   132,   419,   118,
-   420,   119,   529,   448,   304,   205,   641,   184,    14,    17,
-    18,    19,    40,    44,    45,   126
+   372,   576,   672,   745,   746,   752,   582,   392,   678,   755,
+   669,   503,   504,   606,   696,   765,   847,   815,   850,   680,
+   854,   896,   897,   798,   799,   843,   844,   890,  1019,  1045,
+  1066,  1046,  1070,  1067,   959,   960,   945,  1086,   981,   891,
+   917,   907,   937,   957,  1001,  1002,   912,   389,   950,   990,
+  1011,  1012,  1013,     1,     2,     3,     4,    23,    24,    25,
+    58,   145,     6,   490,   592,   593,   139,   140,   141,     7,
+    21,    55,    37,    38,    39,   155,   157,   147,    62,    64,
+    60,   150,    94,    95,    96,    97,    98,   323,    99,   450,
+   552,   311,   100,   200,   563,   564,   272,   382,   383,   355,
+   356,   357,   358,   359,   360,   361,   186,   561,   992,   281,
+   319,   202,   203,   282,   187,   436,   437,   640,   722,   188,
+   301,   654,   655,   102,   348,   247,   103,   174,   286,   287,
+   288,   424,   289,   616,   702,   422,   410,   411,   522,   709,
+   412,   621,   413,   104,   215,   216,   217,   105,   106,   211,
+   107,   414,   706,   415,   698,   416,   417,   699,   700,   701,
+   819,   857,   777,   778,   826,   861,   862,   703,   226,   227,
+   228,   229,   617,   230,   418,   142,   109,   110,   111,   112,
+   113,   114,    11,   162,   116,   117,   517,   151,   152,   518,
+   153,   154,   131,   132,   419,   118,   420,   119,   528,   786,
+   304,   205,   641,   184,    14,    17,    18,    19,    40,    44,
+    45,   126
 };
 
 static const short yypact[] = {-32768,
--32768,    58,    15,    58,   140,-32768,   197,-32768,-32768,-32768,
-   140,-32768,-32768,-32768,-32768,-32768,   220,   220,   326,   342,
-   405,   140,   424,   358,-32768,   649,   400,-32768,   415,-32768,
--32768,-32768,-32768,   446,   480,   484,  1796,   487,-32768,-32768,
-   220,-32768,  1796,-32768,   433,-32768,-32768,-32768,    59,   579,
--32768,-32768,   409,   482,-32768,   486,   486,    58,-32768,   116,
--32768,   116,-32768,   116,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   452,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   272,   174,   174,   545,   174,
-   546,   576,   589,   577,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   578,-32768,   116,-32768,  1370,-32768,-32768,   291,   545,
-   291,   815,   291,  1370,  1086,  2359,  2549,   471,-32768,-32768,
-   649,-32768,   603,-32768,-32768,-32768,-32768,-32768,-32768,   614,
--32768,-32768,-32768,   415,   700,-32768,-32768,-32768,   649,   597,
--32768,   140,   649,   643,-32768,   199,   116,-32768,   656,   658,
--32768,-32768,-32768,-32768,   116,   658,   116,   658,   678,   545,
-   711,    59,   685,   732,   174,   644,   659,-32768,   759,-32768,
-  1796,-32768,   782,   648,  2472,  2402,  1152,-32768,  2549,-32768,
--32768,   728,-32768,-32768,   545,-32768,   757,   765,   787,   775,
-   787,   777,   333,   787,-32768,   799,   782,   672,-32768,-32768,
-   793,-32768,-32768,   800,-32768,   956,   500,   801,   787,  1370,
--32768,   811,  1370,-32768,   336,-32768,  1370,   830,    -8,   733,
-  2437,-32768,  1550,-32768,  2549,   825,   359,-32768,  2549,-32768,
--32768,   824,-32768,-32768,-32768,-32768,   255,  2549,-32768,-32768,
--32768,-32768,   860,-32768,   844,   847,   719,   848,-32768,-32768,
-   511,   486,-32768,   856,   511,-32768,   497,   866,-32768,   835,
-   658,   870,   876,   116,   658,   658,-32768,   956,   333,   782,
--32768,   818,   827,-32768,-32768,-32768,-32768,   672,   814,   149,
-   883,-32768,   956,  1977,  1977,-32768,   879,-32768,   894,  1370,
--32768,-32768,   907,   906,-32768,   442,    44,-32768,  2549,-32768,
-   725,  1015,   545,   787,   908,   782,-32768,   545,   956,   944,
-   897,-32768,-32768,   937,   921,-32768,   727,   782,   918,-32768,
--32768,-32768,-32768,   545,-32768,-32768,  1370,-32768,  2514,  2472,
--32768,   943,-32768,-32768,-32768,   929,   733,-32768,   388,    48,
--32768,-32768,  2514,   949,  2514,-32768,  2549,   928,-32768,-32768,
--32768,-32768,-32768,   324,   613,-32768,-32768,-32768,-32768,-32768,
--32768,   922,   291,   545,   291,   291,-32768,   415,   942,-32768,
-   729,-32768,-32768,   946,   415,   947,-32768,-32768,-32768,   979,
-   880,     5,-32768,   945,-32768,-32768,   745,-32768,   159,   782,
-   544,-32768,   782,   956,  2106,  1852,  1491,-32768,  2584,-32768,
--32768,  1977,   769,   769,   962,   964,   973,  1977,   116,-32768,
--32768,  2584,-32768,-32768,-32768,-32768,-32768,-32768,   952,-32768,
--32768,   362,-32768,-32768,  1977,-32768,-32768,-32768,  2514,   965,
--32768,-32768,   545,   663,   374,   216,-32768,   303,   955,-32768,
--32768,   333,-32768,   967,-32768,   623,   969,   970,   956,-32768,
--32768,   782,-32768,-32768,   782,-32768,-32768,  2168,  2168,   951,
-   971,-32768,   974,-32768,-32768,  2514,   990,-32768,-32768,-32768,
-   255,   860,-32768,   511,-32768,   782,    66,   976,   972,   977,
-   333,   189,   980,   751,-32768,-32768,   415,   820,   758,   426,
--32768,-32768,-32768,   782,-32768,   174,   782,   910,   782,   932,
--32768,-32768,  1002,   544,   477,-32768,-32768,-32768,   536,   991,
-   992,   906,  2106,-32768,   789,   805,   362,  1977,-32768,-32768,
-   999,-32768,  2549,  2168,  2168,   982,-32768,-32768,  2584,  2584,
-  2584,  2584,  1977,   954,  1977,-32768,  2584,   782,  2168,  2168,
-   997,  1004,  1006,-32768,  1007,   956,  1015,   403,   867,  1015,
-   897,-32768,   956,   956,-32768,-32768,   956,  2324,  2324,  1008,
-   821,-32768,   652,-32768,  1013,-32768,-32768,-32768,  1011,  1016,
--32768,-32768,   198,  1015,   688,-32768,   545,   782,   545,   978,
-   544,   951,   545,   983,-32768,-32768,  1019,  1023,   828,-32768,
-   237,   833,-32768,   985,   986,-32768,-32768,   857,-32768,-32768,
--32768,-32768,   987,-32768,  1032,   207,  1977,-32768,  1977,-32768,
-  1022,-32768,  1977,  1916,   521,-32768,  2549,   652,  1013,-32768,
-  2584,-32768,  2584,  2584,  2584,-32768,  1977,-32768,-32768,  1026,
-   652,  1013,-32768,-32768,-32768,   956,-32768,-32768,   398,-32768,
--32768,   217,-32768,  1033,-32768,  1038,   174,   174,   674,-32768,
--32768,  1031,  1048,  1053,  1046,   782,  2168,-32768,-32768,-32768,
--32768,   782,   544,-32768,   106,  1065,  1035,    27,    86,  1020,
-   333,  1039,-32768,-32768,    49,-32768,  1037,   947,-32768,-32768,
--32768,-32768,   426,   255,   324,-32768,-32768,-32768,-32768,-32768,
-    13,   538,-32768,   134,-32768,  1977,-32768,  1083,-32768,  1081,
-  1087,-32768,-32768,  1091,-32768,  1074,  1082,  2514,  2514,-32768,
-  1061,   782,-32768,-32768,   956,-32768,   862,-32768,   403,-32768,
-   732,   174,  2324,-32768,-32768,-32768,-32768,-32768,  1057,  1059,
-   403,-32768,   705,  1100,-32768,-32768,  1060,  1015,-32768,  1058,
--32768,   978,   140,   544,   544,-32768,   951,-32768,-32768,-32768,
--32768,-32768,    36,   169,  1977,  1977,-32768,-32768,-32768,-32768,
-  1977,-32768,  1977,  1977,  1977,   686,-32768,   374,  1110,  1977,
--32768,-32768,   545,-32768,  1047,  1049,-32768,-32768,-32768,-32768,
--32768,   470,-32768,-32768,  1065,-32768,   261,  1064,-32768,-32768,
-   330,-32768,-32768,  1117,-32768,-32768,   788,   174,   547,  1111,
-  1115,-32768,  1105,-32768,-32768,-32768,-32768,  2514,-32768,   888,
--32768,-32768,-32768,-32768,-32768,-32768,   705,-32768,   403,-32768,
--32768,-32768,  1118,  1072,    50,-32768,  1113,   544,-32768,-32768,
-  1136,  1629,-32768,-32768,  1125,-32768,-32768,  1977,-32768,-32768,
-  1977,  1120,-32768,   879,-32768,-32768,   705,  1123,-32768,-32768,
-   255,-32768,   544,  1131,  1143,-32768,  1134,  1629,  1135,  1151,
-    39,   407,  1629,  1629,  1153,   545,   545,   545,   545,   545,
-   474,   474,   140,-32768,-32768,-32768,-32768,-32768,   705,  1144,
--32768,-32768,   879,  1977,-32768,   599,  1118,-32768,-32768,-32768,
-  1168,   227,  1149,  1132,   515,-32768,    99,   140,  1159,-32768,
-   533,  1159,  1160,  1165,  1149,   545,   255,   255,  1164,   255,
-  1162,-32768,   426,   615,  1125,-32768,   997,  1183,-32768,  1184,
-  1190,  1629,-32768,  1169,  1180,    11,  1189,  1191,   474,   474,
-  1187,-32768,  1629,   324,   563,  1160,   769,   769,  1069,  1069,
-  1160,  2185,-32768,   782,   709,-32768,  1173,-32768,-32768,-32768,
-   782,  1185,   756,-32768,-32768,  1200,-32768,-32768,  1117,-32768,
-  1179,-32768,  1629,   823,-32768,-32768,-32768,  1202,  1203,  1204,
-  1205,  1629,-32768,  1159,-32768,   635,-32768,-32768,-32768,  1199,
-  1211,  1212,  1213,-32768,-32768,-32768,   642,-32768,-32768,  1216,
-  1192,  1149,  1629,  1215,   782,-32768,-32768,   660,-32768,  1117,
-   255,   782,  1217,-32768,-32768,  1218,    11,  1227,  1230,  1231,
--32768,  1160,-32768,   782,  1159,  1159,  1159,  1159,-32768,  2215,
--32768,  1629,-32768,-32768,-32768,  1219,-32768,   756,-32768,-32768,
-  1221,  1223,  1220,   710,  1210,-32768,-32768,    11,    11,    11,
--32768,-32768,   782,   782,   782,   782,-32768,-32768,-32768,-32768,
--32768,  1629,    88,-32768,-32768,-32768,-32768,  1222,-32768,-32768,
-  1224,     3,     3,     3,  1238,  1239,  1240,  1245,-32768,   380,
-  1629,  1629,-32768,-32768,-32768,-32768,-32768,  1241,  1242,  1243,
-  1244,  1629,-32768,  1249,-32768,-32768,-32768,-32768,  1251,-32768,
--32768,  1265,  1273,-32768
+-32768,    35,    61,    35,   113,-32768,   163,-32768,-32768,-32768,
+   113,-32768,-32768,-32768,-32768,-32768,   232,   232,   275,   287,
+   346,   113,   470,   612,-32768,   747,   312,-32768,   546,-32768,
+-32768,-32768,-32768,   454,   466,   490,  1745,   353,-32768,-32768,
+   232,-32768,  1745,-32768,   314,-32768,-32768,-32768,   194,   165,
+-32768,-32768,   338,   482,-32768,   458,   458,    35,-32768,    74,
+-32768,    74,-32768,    74,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   467,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   372,   301,   301,   564,   301,
+   555,   567,   609,   661,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,   605,-32768,    74,-32768,  2552,-32768,-32768,   295,   564,
+   295,  1056,   295,  2552,  1171,  2358,  2587,   404,-32768,-32768,
+   747,-32768,   623,-32768,-32768,-32768,-32768,-32768,-32768,   627,
+-32768,-32768,-32768,   546,   755,-32768,-32768,-32768,   747,   667,
+-32768,   113,   747,   637,-32768,   221,    74,-32768,   687,   640,
+-32768,-32768,-32768,-32768,    74,   640,    74,   640,   679,   564,
+   694,   194,   672,   709,   301,   647,   669,-32768,   744,-32768,
+  1745,-32768,  1011,   691,  2475,  2405,  1455,-32768,  2587,-32768,
+-32768,   758,-32768,-32768,   564,-32768,   782,   778,   811,   807,
+   811,   809,   409,   811,-32768,   831,  1011,   441,-32768,-32768,
+   829,-32768,-32768,   857,-32768,  1097,   296,   852,   811,  2552,
+-32768,   870,  2552,-32768,   283,-32768,  2552,   877,   146,   731,
+  2440,-32768,  1572,-32768,  2587,   883,   559,-32768,  2587,-32768,
+-32768,   887,-32768,-32768,-32768,-32768,   408,  2587,-32768,-32768,
+-32768,-32768,   903,-32768,   886,   906,   735,   902,-32768,-32768,
+   321,   458,-32768,   921,   321,-32768,   537,   927,-32768,   895,
+   640,   928,   931,    74,   640,   640,-32768,  1097,   409,  1011,
+-32768,   874,   876,-32768,-32768,-32768,-32768,   441,   871,    29,
+   939,-32768,  1097,  2079,  2079,-32768,   930,-32768,   943,  2552,
+-32768,-32768,   945,   944,-32768,   474,   159,-32768,  2587,-32768,
+   776,  1108,   564,   811,   949,  1011,-32768,   564,  1011,   711,
+   933,-32768,-32768,   971,   958,-32768,   781,  1011,   983,-32768,
+-32768,-32768,-32768,   564,-32768,-32768,  2552,-32768,  2517,  2475,
+-32768,   974,-32768,-32768,-32768,   960,   731,-32768,   512,   177,
+-32768,-32768,  2517,   980,  2517,-32768,  2587,   962,-32768,-32768,
+-32768,-32768,-32768,   355,   697,-32768,-32768,-32768,-32768,-32768,
+-32768,   966,   295,   564,   295,   295,-32768,   546,   982,-32768,
+   794,-32768,-32768,   978,   546,   985,-32768,-32768,-32768,   632,
+   923,    57,-32768,   988,-32768,-32768,   827,-32768,   552,  1011,
+   633,-32768,  1011,  1097,  2138,  1925,  1374,-32768,  2629,-32768,
+-32768,  2079,   851,   851,   995,   996,  1008,  2079,    74,-32768,
+-32768,  2629,-32768,-32768,-32768,-32768,-32768,-32768,   984,-32768,
+-32768,   128,-32768,-32768,  2079,-32768,-32768,-32768,  2517,  1013,
+-32768,-32768,   564,   706,   415,    63,-32768,   719,   994,-32768,
+-32768,   597,-32768,  1002,-32768,  1001,  1010,  1097,-32768,-32768,
+  1011,-32768,-32768,  1011,-32768,-32768,  2197,  2197,   989,  1015,
+-32768,  1017,-32768,-32768,  2517,  1037,-32768,-32768,-32768,   408,
+   903,-32768,   321,-32768,  1011,    89,  1021,  1016,  1024,   409,
+   155,  1027,   845,-32768,-32768,   546,   786,   849,   570,-32768,
+-32768,-32768,  1011,-32768,   301,  1011,   967,  1011,   998,-32768,
+-32768,  1055,   633,   414,-32768,-32768,-32768,   613,  1044,  1043,
+   944,  2138,-32768,   873,   855,   128,  2079,-32768,-32768,  1045,
+-32768,  2587,  2197,  2197,  1029,-32768,-32768,  2629,  2629,  2629,
+  2629,  2079,  1031,  2079,-32768,  2629,  1011,  2197,  2197,  1050,
+  1048,  1058,-32768,  1059,  1097,  1108,   568,   838,  1108,   811,
+   339,   933,-32768,-32768,  1011,  1011,  1019,  2323,  2323,  1075,
+   861,-32768,   734,-32768,  1074,-32768,-32768,-32768,  1071,  1077,
+-32768,-32768,   263,  1108,  1047,-32768,   564,  1011,   564,  1038,
+   633,   989,   564,  1035,-32768,-32768,  1082,  1083,   872,-32768,
+   250,   875,-32768,  1051,  1052,-32768,-32768,   879,-32768,-32768,
+-32768,-32768,  1040,-32768,  1102,     3,  2079,-32768,  2079,-32768,
+  1087,-32768,  2079,  2002,   366,-32768,  2587,   734,  1074,-32768,
+  2629,-32768,  2629,  2629,  2629,-32768,  2079,-32768,-32768,  1085,
+   734,  1074,-32768,-32768,-32768,  1097,-32768,-32768,   444,-32768,
+-32768,   242,  1099,-32768,   590,   811,-32768,   891,  1098,-32768,
+   301,   301,   301,   753,-32768,-32768,  1088,  1104,  1110,  1103,
+  1011,  2197,-32768,-32768,-32768,-32768,  1011,   633,-32768,   387,
+  1105,  1064,    18,   211,  1066,   409,  1061,-32768,-32768,   181,
+-32768,  1072,   985,-32768,-32768,-32768,-32768,   570,   408,   355,
+-32768,-32768,-32768,-32768,-32768,    41,   476,-32768,   220,-32768,
+  2079,-32768,  1123,-32768,  1122,  1124,-32768,-32768,  1125,-32768,
+  1111,  1112,  2517,  2517,-32768,  1092,  1011,-32768,-32768,  1097,
+-32768,   894,-32768,   568,-32768,   811,   811,    75,-32768,-32768,
+  1127,   709,   301,  2323,-32768,-32768,-32768,-32768,-32768,  1090,
+  1093,   568,-32768,   860,  1130,-32768,-32768,  1094,  1108,-32768,
+  1089,-32768,  1038,   113,   633,   633,-32768,   989,-32768,-32768,
+-32768,-32768,-32768,    32,   477,  2079,  2079,-32768,-32768,-32768,
+-32768,  2079,-32768,  2079,  2079,  2079,   756,-32768,   415,  1143,
+  2079,-32768,-32768,   564,-32768,   896,-32768,  1140,-32768,  1011,
+  1079,  1080,-32768,-32768,-32768,-32768,-32768,   420,-32768,-32768,
+  1105,-32768,   405,  1101,-32768,-32768,    43,-32768,-32768,  1150,
+-32768,-32768,   826,   301,   578,  1145,  1166,-32768,  1156,-32768,
+-32768,-32768,-32768,  2517,-32768,   907,-32768,-32768,-32768,-32768,
+   811,-32768,    64,-32768,-32768,-32768,   860,-32768,   568,-32768,
+-32768,-32768,   261,-32768,  1162,   633,-32768,-32768,  1186,  1616,
+-32768,-32768,  1178,-32768,-32768,  2079,-32768,-32768,  2079,  1175,
+-32768,   930,-32768,-32768,-32768,-32768,   408,-32768,   333,  1185,
+  1197,-32768,  1189,  1616,  1191,  1207,   174,   453,  1616,  1616,
+  1193,   564,   564,   564,   564,   564,   573,   573,   113,-32768,
+-32768,-32768,-32768,-32768,   860,  1188,-32768,-32768,   930,  2079,
+-32768,-32768,   633,-32768,-32768,  1211,   360,  1192,  1176,   635,
+-32768,   329,   113,  1196,-32768,   777,  1196,  1198,  1204,  1192,
+   564,   408,   408,  1199,   408,  1202,-32768,   570,   599,  1178,
+-32768,  1050,  1206,  1218,  1225,  1616,-32768,  1201,  1216,    59,
+  1227,  1229,   573,   573,  1210,-32768,  1616,   355,   506,  1198,
+   851,   851,   981,   981,  1198,  2155,-32768,  1011,   762,-32768,
+  1212,-32768,-32768,-32768,  1011,  1217,   938,-32768,-32768,  1236,
+-32768,-32768,-32768,-32768,  1213,-32768,  1616,   842,-32768,-32768,
+-32768,  1237,  1238,  1239,  1241,  1616,-32768,  1196,-32768,   606,
+-32768,-32768,-32768,  1235,  1240,  1243,  1244,-32768,-32768,-32768,
+   617,-32768,-32768,  1245,  1215,  1192,  1616,  1231,  1011,-32768,
+-32768,   641,-32768,  1150,  1011,  1247,-32768,-32768,  1248,    59,
+  1246,  1252,  1257,-32768,  1198,-32768,  1011,  1196,  1196,  1196,
+  1196,-32768,  2214,-32768,  1616,-32768,-32768,-32768,  1249,-32768,
+   938,-32768,  1251,  1230,   665,   815,-32768,-32768,    59,    59,
+    59,-32768,-32768,  1011,  1011,  1011,  1011,-32768,-32768,-32768,
+-32768,-32768,  1616,   119,-32768,-32768,-32768,-32768,  1250,-32768,
+-32768,  1255,   147,   147,   147,  1254,  1260,  1265,  1266,-32768,
+   585,  1616,  1616,-32768,-32768,-32768,-32768,-32768,  1261,  1262,
+  1263,  1264,  1616,-32768,  1270,-32768,-32768,-32768,-32768,  1271,
+-32768,-32768,  1269,  1293,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,-32768,  1106,-32768,-32768,  1141,-32768,-32768,    95,
-   791,  -604,   611,-32768,   495,-32768,   604,   783,   540,-32768,
--32768,   555,  -477,-32768,-32768,-32768,-32768,  -902,-32768,-32768,
--32768,-32768,-32768,   370,-32768,   399,  -746,   472,-32768,   286,
-   437,   -95,-32768,-32768,-32768,-32768,-32768,   258,-32768,   302,
--32768,  -135,  -527,  -427,-32768,   238,  -732,  -652,-32768,   276,
--32768,-32768,  -705,-32768,  -401,-32768,   269,-32768,-32768,-32768,
--32768,  1285,  1286,  1267,-32768,-32768,    68,   634,-32768,   630,
-  1260,  1266,  1070,-32768,-32768,-32768,    52,-32768,  1207,-32768,
--32768,-32768,-32768,-32768,-32768,   235,  1281,  1154,-32768,-32768,
--32768,  -442,-32768,   781,  -243,-32768,-32768,   -53,   -22,   612,
--32768,   840,  1084,   863,-32768,-32768,-32768,-32768,-32768,   -88,
-   839,   -59,   -90,  -245,-32768,   353,  1226,   -78,-32768,  -505,
-   794,  -657,-32768,   -72,-32768,   784,   617,  -100,-32768,   854,
-  -508,-32768,-32768,-32768,   803,  -662,  -804,   730,   -44,  -255,
--32768,  -355,-32768,-32768,-32768,   208,  -159,-32768,  -117,-32768,
-   -60,-32768,-32768,   -51,-32768,-32768,   584,-32768,   950,-32768,
--32768,-32768,   590,-32768,-32768,-32768,   641,   543,-32768,-32768,
-   436,   598,  -142,  -199,  1010,-32768,   -73,   -97,    -7,-32768,
-  -218,  -209,  -203,-32768,  -202,-32768,-32768,   -34,-32768,-32768,
--32768,   120,-32768,-32768,  -208,   -47,-32768,   960,   -29,   -76,
-  1139,-32768,  -400,   806,-32768,    43,  -103,   752,    -6,   -18,
-   -14,-32768,   -23,   -20,-32768,-32768
+-32768,-32768,-32768,  1134,-32768,-32768,  1160,-32768,-32768,    22,
+   810,  -599,   622,-32768,   496,-32768,   616,   800,   547,-32768,
+   561,  -483,-32768,-32768,-32768,-32768,   290,-32768,-32768,-32768,
+-32768,-32768,   375,   411,   471,-32768,   440,  -290,-32768,-32768,
+-32768,-32768,-32768,   264,-32768,   303,-32768,  -131,  -537,  -785,
+-32768,   243,  -826,  -664,-32768,   280,-32768,-32768,  -777,-32768,
+  -362,-32768,   273,-32768,-32768,-32768,-32768,  1297,  1301,  1279,
+-32768,-32768,    65,   639,-32768,   643,  1272,  1275,  1081,-32768,
+-32768,-32768,    24,-32768,  1219,-32768,-32768,-32768,-32768,-32768,
+-32768,   292,  1280,  1168,-32768,-32768,-32768,  -430,-32768,   789,
+-32768,  -247,-32768,-32768,  -129,   -34,   610,   553,   853,  1095,
+   882,-32768,-32768,-32768,-32768,-32768,   -89,  -441,    71,   -78,
+  -251,-32768,    34,  1232,   -82,  -510,   799,  -666,-32768,   -60,
+-32768,   788,   614,   -95,-32768,   881,  -497,-32768,-32768,-32768,
+   819,  -541,  -789,   743,    10,  -259,-32768,  -338,-32768,-32768,
+-32768,   317,    76,-32768,  -105,-32768,   -48,-32768,-32768,   -68,
+-32768,-32768,   589,-32768,   968,-32768,-32768,-32768,   594,-32768,
+-32768,-32768,   652,   548,-32768,-32768,   438,   604,  -117,  -210,
+  1028,-32768,   -63,   -84,    -7,-32768,  -224,  -207,  -206,-32768,
+  -199,-32768,-32768,   -32,-32768,-32768,-32768,   -62,-32768,-32768,
+  -208,   -47,-32768,   977,   -29,   -72,  1022,-32768,  -397,-32768,
+   729,  -168,  -103,   779,   -10,   -25,     4,-32768,   -20,   -17,
+-32768,-32768
 };
 
 
-#define        YYLAST          2695
+#define        YYLAST          2740
 
 
 static const short yytable[] = {    52,
-    42,   130,   115,   530,    20,   842,    46,   193,   115,   163,
-   164,   165,    56,   167,   101,    32,    57,   566,   345,   235,
-   101,   201,   380,   339,   207,   381,   603,   299,   409,   108,
-   494,   190,   363,   293,   246,   108,   363,   394,   192,   507,
-   208,   364,    48,   234,   642,   364,   794,   365,   366,   651,
-   651,   365,   366,   210,   180,   547,  1001,   291,   248,   296,
-   732,   774,   472,   127,   739,   128,     8,   218,   665,   668,
-   172,    12,  1073,   780,   745,   851,   182,    43,   336,   299,
-   965,   235,   752,   347,   182,   219,   232,   232,   273,   753,
-   961,   495,   127,   294,   128,   574,   300,  1029,   181,   666,
-   886,   932,   240,   674,    52,   298,   181,   181,   231,   231,
-   332,     5,   842,   280,   218,   738,   253,   746,   852,  1074,
-   127,   148,   128,   256,   795,   146,   933,   235,   966,   130,
-   345,   235,   914,   575,   547,   254,   115,   315,   317,   676,
-   235,   517,   149,    13,   898,   182,   232,   297,   101,   232,
-   362,   341,   327,   575,   362,   346,   757,   507,   325,   758,
-   924,   846,   430,   108,   350,   325,   467,   181,   231,   181,
-   731,   231,   947,   575,   248,   130,    65,   129,   248,   390,
-   182,   885,   820,   182,   498,   730,   461,   182,   520,   499,
-   251,   232,   549,   340,   255,   232,   941,    78,   551,   232,
-   468,   235,   181,   557,   442,   181,   129,   349,   232,   181,
-   384,   435,   462,   231,   651,   231,   391,   231,   387,  -327,
-   916,   231,   257,   175,   439,   431,   546,   373,   662,   327,
-   231,   305,   787,   307,   129,   460,   313,   580,   796,   522,
-   421,   127,   294,   128,   547,   547,   441,   797,   798,   235,
-   921,   313,   536,   258,   922,   363,   581,    47,   456,   947,
-   182,   481,   615,    15,   364,   663,   791,   792,  1012,   232,
-   365,   366,    22,   470,    65,   325,   689,   482,    49,   628,
-   548,   719,   181,   979,   477,   479,   542,   690,   984,   547,
-   478,   231,   480,   483,    48,    78,   156,   182,   158,   232,
-   182,  1058,  1058,   458,   793,   195,    48,   459,  -305,  1043,
-  1044,  1045,  1046,   232,   185,   232,   160,   232,   161,   181,
-   196,   231,   181,   569,   197,   819,   278,    48,   575,  -305,
-   500,   475,    47,   506,   330,   231,    48,   231,   373,   231,
-   127,   148,   128,    28,   544,   373,   440,   472,   485,   130,
-   854,   509,   516,    49,   309,   129,   310,   526,   628,  1041,
-   328,   329,   149,   534,   148,    29,   127,   148,   128,   622,
-   622,   622,   622,   362,   387,   889,    33,   629,    41,   148,
-   541,   261,   524,   379,   343,   344,   525,   588,   149,   265,
-   715,   266,   560,   148,   538,   562,   199,   248,   822,   232,
-   344,    48,   823,   921,   539,   565,    48,  1082,   540,   900,
-   330,   248,   465,   466,   344,   330,   573,    47,    48,   597,
-    41,   231,   716,   115,   115,   235,   639,   742,    47,    48,
-   901,   558,   135,   124,   384,   559,   232,   562,    49,   600,
-   136,   571,    33,   911,   912,    31,   127,   148,   128,   591,
-   108,   108,   125,    59,   129,   637,   435,   373,   231,   435,
-   594,   710,   484,   710,   710,   710,   428,   429,   149,   489,
-   618,   619,    34,    35,    36,   671,    47,    48,   630,  1037,
-   129,   652,   652,   435,   435,   631,   632,    61,   626,   115,
-   115,    63,   816,   232,   677,   817,   237,   591,   669,    47,
-    48,   970,   971,  -337,   115,   115,   238,   121,   768,   768,
-  1062,  1063,  1064,    65,   986,   231,   108,   108,   670,   235,
-    49,   370,   137,   115,   115,   127,   148,   128,   535,   159,
-  -327,   108,   108,   977,    78,   718,   980,   981,   138,   658,
-   322,   535,   990,   130,   659,   703,   604,   149,    48,   994,
-   108,   108,   605,   168,    81,    82,    83,    84,   320,   345,
-   129,   607,   692,   755,   608,   195,    48,   609,   700,   756,
-   721,   722,   866,   867,   868,   869,   870,   871,   872,   873,
-   196,   330,   711,   169,   197,   975,   278,   232,   937,   938,
-   939,   940,   986,  1026,   706,    33,   727,   171,   707,   170,
-  1032,   708,   729,   133,   134,   709,  1057,   713,   768,   231,
-   173,   714,  1042,   501,   502,    33,   834,   252,   503,   835,
-   320,   918,   115,   171,   817,   724,   926,   927,   928,   929,
-   930,    33,   725,   474,   728,   320,   614,   956,   241,   129,
-   817,  1065,  1066,  1067,  1068,   776,   652,   435,   553,   108,
-   554,   759,   771,   594,   750,   279,   199,  1013,   262,   263,
-  1014,   444,   446,   252,  1019,   195,    48,  1020,   545,   813,
-    33,   457,   657,   784,   195,    48,   284,   285,   232,   232,
-   196,   267,  1027,   264,   197,  1028,   278,   316,   115,   196,
-   195,    48,    33,   197,   723,   278,   316,    34,    35,    36,
-   231,   231,    65,    48,    33,   196,   808,   195,    48,   197,
-   800,   434,    47,    48,   269,   108,   700,   270,   805,   806,
-   807,   833,   196,   243,   244,   812,   197,   991,   278,   992,
-   274,   245,   457,  1053,   535,   271,   790,   623,   624,   625,
-   333,   334,   809,   353,   354,   275,   457,   535,   811,   432,
-   433,   454,   455,   486,   487,   279,   199,   784,   195,    48,
-   666,   827,   894,   299,   279,   199,   276,   903,   904,   454,
-   497,   527,   528,   196,   781,   584,   487,   197,   232,   278,
-    53,   199,   590,   487,   195,    48,   302,   784,   120,   195,
-   320,   611,   263,   882,   120,   303,   883,   279,   199,   196,
-   231,   320,   877,   197,   306,   278,  1054,   308,   866,   867,
-   868,   869,   870,   871,   872,   873,   314,   195,    48,   784,
-   318,   827,    65,    48,   876,   996,   962,  -302,   877,   612,
-   613,   324,   196,   877,   877,   326,   197,   973,   198,   917,
-   166,   877,   877,   243,   586,   655,   656,   342,   279,   199,
-   876,   587,   681,   354,   331,   876,   876,   682,   683,   347,
-   189,   191,   194,   206,   209,   294,   913,  1003,   351,   195,
-    48,   352,  -296,   237,   279,   199,  1011,   949,   950,   368,
-   952,   686,   656,   954,   196,    53,   772,   773,   197,   375,
-   278,   934,   877,  -296,   830,   831,   377,  1024,   376,   877,
-   877,   457,   378,   877,   385,   644,   646,   388,   199,   457,
-   393,   268,   877,   386,   876,   841,   284,  1004,  1005,   423,
-   195,    48,   120,   425,   283,   876,  1048,  1076,  1077,   426,
-   427,   982,   983,   877,   989,   196,   209,   450,  -289,   197,
-   452,   278,   877,   453,   312,  -296,   195,    48,   283,   283,
-   463,   464,   263,   471,   476,   876,  1069,   321,   195,    48,
-   199,   196,   474,   877,   876,   197,   493,   278,   445,   488,
-   490,   827,   543,   196,   496,  1083,  1084,   197,   531,   278,
-   532,   195,    48,   533,   550,   876,  1089,   537,   320,   552,
-   877,   322,   877,   555,   556,   567,   196,   570,   568,   391,
-   197,   578,   278,   599,   877,   130,   577,   579,   374,   602,
-   583,   199,   989,   610,   876,   627,  -521,   195,    48,   321,
-   312,   283,   877,  -522,   620,   284,   654,  1061,   634,   283,
-   635,   636,   196,   657,   321,   660,   197,   199,   434,   688,
-   661,   877,   877,   679,   876,   672,   678,   680,   699,   199,
-   684,   685,   877,   438,   191,   687,   712,   283,   553,   443,
-   321,   449,   720,   876,   876,   492,   238,   457,   723,   283,
-   321,   726,   199,  -303,   876,   209,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,   733,   740,    47,    48,
-   127,   212,   213,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,   736,   581,   760,   761,   176,   199,   177,
-   214,   762,   743,   764,   189,   191,   194,   209,   763,   374,
-   178,   765,   179,   770,   663,   785,   374,   779,   786,   788,
-   808,   321,   821,   814,   828,   815,   755,   837,   838,   847,
-   850,   283,   853,   855,   283,   321,   879,   884,   887,   890,
-   891,   893,   895,   896,    47,    48,   127,   294,   213,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,   915,
-   905,   920,   921,   176,   925,   177,   295,    91,    92,    93,
-   935,   942,   944,   953,   209,   283,   178,   951,   179,   321,
-   959,   960,   961,   312,    91,    92,    93,   964,   963,   968,
-   321,   969,   993,   283,   129,   972,   283,  1000,   995,   120,
-   120,  1002,  1007,  1008,  1009,  1010,  1015,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,   283,  1016,  1017,
-  1018,  1022,   312,   921,  1021,  1033,  1036,  1038,   374,  1025,
-  1039,  1040,   250,  1049,   183,   283,   851,  1051,   283,  1071,
-   283,  1072,   183,   183,   233,   236,  1078,  1079,  1080,  1052,
-    91,    92,    93,  1081,  1093,  1085,  1086,  1087,  1088,  1090,
-   129,  1091,  1094,   249,   242,   120,   120,   585,   737,   818,
-   747,   789,   601,   778,   957,   919,  1031,   888,   845,   283,
-   120,   120,  1060,  1023,  1070,  1047,  1050,   283,   438,   443,
-   321,   438,    26,    27,   321,   321,  1054,   122,   321,   120,
-   120,   748,   749,   183,   233,   183,   143,   236,    91,    92,
-    93,   367,   144,   123,   277,   438,   438,   239,   191,   283,
-   443,   643,   775,   596,   209,   598,   572,   204,   369,   777,
-   638,   589,   653,   633,   804,   510,   705,   802,   183,   769,
-   840,   183,   958,   801,   469,   183,   521,     0,   645,   233,
-     0,   233,     0,   236,     0,     0,     0,   236,     0,     0,
-     0,     0,    47,    48,     0,     0,   236,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,   321,     0,     0,
-   443,   176,     0,   177,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   178,     0,   179,   283,   120,     0,
-     0,     0,     0,   283,     0,     0,     0,     0,     0,     0,
-     0,     0,   312,     0,     0,     0,     0,     0,   183,     0,
-     0,     0,     0,     0,     0,     0,     0,   236,     0,     0,
+    20,   130,   101,    42,   115,    56,   529,   193,   101,    46,
+   115,    32,   339,   163,   164,   165,   380,   167,   345,   603,
+   305,   381,   307,   207,   409,   313,   363,   190,   566,   108,
+   363,   394,   235,   201,    57,   108,   860,   180,   642,   246,
+   313,   175,   810,   364,   365,    47,   546,   364,   365,    43,
+   192,   366,   208,   234,   598,   366,   506,   785,   293,   390,
+   656,   656,   248,   670,   673,   210,    49,   218,    12,   291,
+   743,   296,   694,   172,   750,   796,   182,   195,   127,   148,
+   128,   938,   493,   695,   182,   219,   232,   232,     5,   493,
+   671,   546,   273,   961,   235,   300,   391,   679,   181,   789,
+   149,   926,   927,   336,    52,   240,   181,   181,   231,   231,
+   763,   842,     8,   648,   218,   298,    13,   764,   574,   253,
+   811,   975,   146,   127,   294,   128,   256,   547,   979,   130,
+   345,   254,   127,   148,   128,   440,   101,   516,   115,   955,
+   235,   325,   860,   494,   235,   182,   232,   297,   325,   232,
+   864,   681,   330,   235,   149,   362,   575,   984,   985,   362,
+   537,   341,   251,   108,   327,   346,   255,   181,   231,   181,
+  1000,   231,   866,   506,   350,   130,   980,    48,   248,   961,
+   182,   299,   248,   182,   741,  -326,   548,   182,   519,   133,
+   134,   232,   129,   340,   299,   232,   557,   471,   127,   232,
+   128,   379,   181,   840,   442,   181,   756,   349,   232,   181,
+  1025,   460,   347,   231,   235,   231,  1084,   231,  1069,  1069,
+   439,   231,   581,   435,   461,   467,   545,   373,   330,    15,
+   231,   447,   580,   330,   459,   431,   656,   129,   803,   320,
+   749,   327,   768,   280,   257,   769,   129,  1000,   363,   757,
+  1054,  1055,  1056,  1057,   127,   294,   128,   615,   325,  1068,
+   182,   480,   235,  1085,   332,   364,   365,   315,   317,   232,
+   546,   807,   808,   366,   628,   258,   481,   430,   575,   913,
+   476,   478,   181,   469,    22,   993,   867,   127,   148,   128,
+   998,   231,    28,   667,   421,   466,   457,   182,    48,   232,
+   182,   320,   477,    65,   479,   482,   724,   328,   329,   149,
+    29,   541,   129,   232,   124,   232,   320,   232,   185,   181,
+   901,   231,   181,    65,    78,   458,  -326,   809,   565,   868,
+   668,   946,    41,   125,   474,   231,   322,   231,   373,   231,
+   384,   195,    48,   543,    78,   373,   534,   569,   387,   130,
+   903,   484,   456,   156,   628,   158,   947,   931,    48,   534,
+  1052,   135,   870,   644,    81,    82,    83,    84,   129,   136,
+   127,   148,   128,   121,    65,   523,   441,   362,   471,   444,
+   446,   643,   645,   935,   720,   904,    31,   936,   455,   483,
+   708,   588,   149,   618,   619,    78,   488,   538,   330,   232,
+   248,   129,   500,   501,   524,   508,   515,   502,   631,   632,
+    47,   525,    48,   456,   248,   546,   160,   533,   161,   933,
+   148,   231,   597,   558,   115,   115,   539,   456,   753,   237,
+   309,    49,   310,   546,   540,   232,  -337,   235,   261,   238,
+   571,   344,   836,   195,    48,   837,   265,    48,   266,   108,
+   108,   742,   559,   614,   575,   915,   373,   231,   196,   594,
+   499,    59,   197,   505,   278,   316,   637,   435,   721,   839,
+   435,   320,   575,    61,   521,   676,   916,   307,   127,   148,
+   128,   320,  1048,   604,   129,   657,   657,   535,    33,   605,
+   115,   115,   232,   682,   674,   435,   435,    63,   428,   429,
+   149,   766,   779,   779,   387,   115,   115,   767,   195,    48,
+   138,  1073,  1074,  1075,   231,   108,   108,   148,    34,    35,
+    36,   560,   137,   196,   562,   115,   115,   197,   989,   278,
+   108,   108,   235,   279,   199,   723,   464,   465,   344,    47,
+    48,   626,   663,   130,   159,   573,   812,   664,    47,    48,
+   108,   108,   534,   994,   995,   813,   814,   787,   788,   440,
+    49,   370,   168,   384,   148,   534,   562,    48,   600,    49,
+   345,    48,    47,    48,   169,    47,    48,   497,   731,   732,
+   733,   456,   498,   909,   343,   344,   991,   232,   918,   919,
+   456,   639,   129,   591,   713,  1004,   591,   711,   279,   199,
+    48,   712,  1008,   622,   622,   622,   622,   630,   935,   231,
+   718,   629,  1093,   779,   719,   726,   697,   727,   550,   170,
+   551,   970,   705,   714,   837,   562,   649,   739,  1026,   115,
+    33,  1027,    41,   735,   195,    48,   716,   173,   607,  1032,
+   736,   608,  1033,   171,   609,   976,  1039,   852,   675,   196,
+   853,   241,  1043,   197,   108,   278,   987,   252,   594,   761,
+   792,   657,   863,  1040,  1053,   264,  1041,    47,    48,   320,
+   435,   882,   883,   884,   885,   886,   887,   888,   889,    33,
+   829,   171,   267,   232,   232,    33,  1016,   252,  1064,   262,
+   263,  1076,  1077,  1078,  1079,  1024,   715,   269,   715,   715,
+   715,   115,   500,   501,   270,   231,   231,   502,   195,    48,
+   770,   544,   271,   195,    48,    33,  1037,   473,   491,   284,
+   285,   195,    48,   196,  -305,   199,   108,   197,   196,   278,
+   316,   738,   197,   274,   278,   445,   196,   740,   333,   334,
+   197,   851,   278,   806,  1059,  -305,   940,   941,   942,   943,
+   944,   276,    33,   456,   662,   275,   825,    65,    48,   353,
+   354,  1065,   827,   882,   883,   884,   885,   886,   887,   888,
+   889,    33,  1080,   734,    33,   816,   824,   845,   243,   244,
+  1005,   705,  1006,   821,   822,   823,   245,   782,    65,    48,
+   828,  1094,  1095,   299,   232,    34,    35,    36,   279,   199,
+   432,   433,  1100,   279,   199,   453,   454,    53,   303,   243,
+   586,   302,   199,   195,   800,   120,   231,   587,   485,   486,
+   893,   120,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,   951,   952,   953,   954,   306,   845,   935,   308,
+   195,    48,   892,  -296,   893,   623,   624,   625,   314,   893,
+   893,   453,   496,   526,   527,   196,   318,   893,   893,   197,
+   384,   278,   195,    48,  -296,   898,   892,   166,   899,   584,
+   486,   892,   892,   590,   486,   611,   263,   196,   928,   612,
+   613,   197,   324,   278,  -302,   660,   661,   189,   191,   194,
+   206,   209,   963,   964,   326,   966,   686,   354,   968,   687,
+   688,   331,   948,   691,   661,   342,   893,   800,   294,   932,
+   351,  1065,    53,   893,   893,   729,   661,   893,   783,   784,
+   830,   831,   347,    91,    92,    93,   893,   237,   892,   797,
+   352,   199,   848,   849,   859,   284,  1017,  1018,   268,   892,
+   195,    48,  1087,  1088,   368,   996,   997,   893,  1003,   120,
+   375,   283,   279,   199,   377,   196,   893,   378,   376,   197,
+   385,   278,   386,   209,   388,   800,   393,   426,   427,   892,
+   423,   312,   425,   449,   451,   283,   283,   893,   892,  -289,
+   452,   462,   463,   263,   321,   195,    48,   470,    67,    68,
+    69,    70,    71,    72,    73,    74,    75,    76,   475,   892,
+   196,   487,   473,   893,   197,   893,   278,  1010,   489,   492,
+  -296,   530,   531,   195,    48,   893,   130,   495,   532,   536,
+   542,   195,    48,   549,   554,  1003,   555,   892,   196,   322,
+   279,   199,   197,   893,   278,   374,   196,   556,  1072,   567,
+   197,   568,   278,   650,   570,   578,   321,   312,   283,   195,
+    48,   577,   893,   893,   579,   892,   283,   583,   195,    48,
+   599,   321,   602,   893,   196,   391,   610,  -521,   197,  -522,
+   434,   620,   634,   196,   892,   892,   199,   197,   284,   198,
+   438,   191,   635,   636,   283,   892,   443,   283,   448,    91,
+    92,    93,   627,   659,   662,   665,   283,   321,   683,   195,
+    48,   666,   209,   279,   199,   677,   684,   685,   692,   693,
+   195,    48,   199,   704,   196,   717,   689,   690,   197,   671,
+   278,   725,   730,   238,   734,   196,   744,   183,   737,   197,
+  -303,   434,   747,   751,   754,   183,   183,   233,   236,   581,
+   199,   189,   191,   194,   209,   771,   374,   772,   773,   199,
+   775,   776,   774,   374,   781,   801,   249,   668,   321,   790,
+   804,   795,   802,   824,   832,   834,   835,   846,   283,   841,
+   766,   283,   321,    47,    48,   127,   212,   213,    67,    68,
+    69,    70,    71,    72,    73,    74,    75,    76,   855,   856,
+   199,   869,   176,   871,   177,   214,   183,   233,   183,   895,
+   236,   199,   900,   905,   906,   178,   908,   179,   910,   911,
+   920,   209,   283,   930,   934,   935,   321,   949,   939,   956,
+   553,   958,   965,   967,   973,   974,   321,   975,   986,   283,
+   977,   183,   283,   978,   183,   120,   120,   982,   183,   983,
+  1009,  1007,   233,  1014,   233,  1015,   236,  1020,  1021,  1022,
+   236,  1023,  1028,   283,  1035,  1038,  1049,  1029,   312,   236,
+  1030,  1031,  1050,  1034,   374,  1044,  1047,  1051,  1104,  1063,
+   250,   283,  1089,  1060,   283,  1062,   283,  1082,  1090,    91,
+    92,    93,  1083,  1091,  1092,  1096,  1097,  1098,  1099,   129,
+  1101,  1102,  1105,   242,   748,   585,   838,   758,   601,   805,
+   794,   120,   120,  1042,   971,   929,   902,   865,  1036,  1071,
+  1081,   183,  1058,  1061,    26,   283,   120,   120,    27,   122,
+   236,   759,   123,   283,   438,   443,   321,   438,   143,   646,
+   760,   144,   367,   283,   283,   321,   120,   120,   277,   239,
+   647,   791,   833,   204,   638,   596,   658,   793,   183,   369,
+   233,   183,   438,   438,   572,   191,   283,   443,   633,   710,
+   820,   209,   818,   509,   233,   780,   233,   589,   236,   972,
+   817,   858,   468,   520,   728,   472,    47,    48,   510,   511,
+   512,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,     0,     0,     0,     0,   396,     0,   397,   513,     0,
+   514,     0,     0,     0,     0,     0,     0,     0,   398,     0,
+   399,   400,   401,     0,   321,   402,     0,   443,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   403,
+   404,   405,   406,   407,   408,     0,     0,     0,     0,   283,
+   120,     0,     0,     0,     0,   283,     0,     0,     0,     0,
+   233,     0,     0,     0,   312,     0,     0,    47,    48,   127,
+   294,   213,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,     0,     0,     0,     0,   176,     0,   177,   295,
+     0,     0,    91,    92,    93,     0,   233,     0,     0,   178,
+     0,   179,   129,     0,     0,   283,     0,     0,   321,     0,
+     0,     0,   443,     0,     0,     0,     0,     0,   249,     0,
+   595,     0,   120,     0,     0,     0,     0,     0,     0,     0,
+   443,     0,   283,     0,     0,     0,     0,   438,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   236,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   283,     0,   183,   321,   233,   183,     0,
-   443,     0,     0,     0,   120,     0,     0,     0,    91,    92,
-    93,   233,   443,   233,   283,   236,     0,     0,     0,   438,
-     0,     0,   473,    47,    48,   511,   512,   513,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,     0,     0,
-     0,     0,   396,     0,   397,   514,     0,   515,     0,     0,
-     0,     0,     0,     0,   443,   398,     0,   399,   400,   401,
-     0,     0,   402,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   403,   404,   405,   406,
-   407,   408,    47,    48,   127,   294,   337,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,   233,   283,     0,
-   443,   221,     0,   223,   338,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   224,     0,   225,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   283,    91,
-    92,    93,     0,     0,   233,     0,     0,     0,     0,   129,
-     0,     0,     0,     0,     0,     0,     0,   906,   907,   908,
-   909,   910,     0,     0,     0,     0,   249,     0,   595,     0,
-   283,    47,    48,     0,     0,     0,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,     0,     0,     0,     0,
-     0,     0,   591,     0,     0,     0,     0,   948,    91,    92,
-    93,   236,     0,     0,     0,     0,   856,   857,   129,     0,
-   858,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   283,     0,   859,     0,
-     0,     0,     0,     0,     0,   283,     0,     0,     0,     0,
-     0,     0,   283,     0,   283,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   860,   861,   862,   863,
-   864,     0,     0,     0,     0,     0,   865,   866,   867,   868,
-   869,   870,   871,   872,   873,     0,     0,    91,    92,    93,
-     0,     0,     0,     0,     0,     0,   283,     0,     0,     0,
-     0,     0,     0,   283,     0,   236,     0,     0,     0,     0,
+     0,     0,   443,    91,    92,    93,     0,     0,   283,     0,
+     0,     0,     0,   129,    47,    48,   127,   294,   337,    67,
+    68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
+     0,     0,     0,   221,     0,   223,   338,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   224,     0,   225,     0,
+     0,     0,     0,     0,     0,   283,     0,   443,    47,    48,
+     0,     0,     0,    67,    68,    69,    70,    71,    72,    73,
+    74,    75,    76,     0,     0,     0,     0,     0,   236,   591,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   872,   873,     0,     0,   874,     0,     0,
+   921,   922,   923,   924,   925,     0,     0,     0,     0,     0,
+     0,     0,     0,   283,     0,   875,     0,     0,     0,     0,
+    91,    92,    93,     0,     0,     0,     0,     0,     0,     0,
+   129,     0,     0,     0,     0,     0,     0,     0,     0,   962,
+     0,     0,     0,   876,   877,   878,   879,   880,     0,   595,
+     0,   762,     0,   881,   882,   883,   884,   885,   886,   887,
+   888,   889,     0,     0,    91,    92,    93,   283,     0,     0,
+     0,     0,     0,     0,   233,   233,   283,     0,     0,     0,
+     0,     0,     0,   283,     0,   283,     0,    65,    48,     0,
+     0,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,     0,     0,     0,     0,    77,     0,    78,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    79,
+     0,    80,     0,     0,     0,     0,     0,   283,    81,    82,
+    83,    84,    85,   283,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,   283,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
+     0,     0,     0,     0,     0,     0,    86,    87,    88,    89,
+    90,     0,   283,   283,   283,   283,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   233,     0,     0,     0,     0,
+     0,     0,     0,    91,    92,    93,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   283,   283,   283,   283,    65,    48,
-     0,     0,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,     0,     0,     0,     0,    77,     0,    78,
-     0,   595,     0,   751,     0,     0,     0,     0,     0,     0,
-    79,     0,    80,     0,     0,     0,     0,     0,     0,    81,
-    82,    83,    84,    85,     0,     0,   233,   233,     0,     0,
-     0,     0,     0,     0,    47,    48,     0,     0,   395,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
-     0,     0,     0,   396,   508,   397,     0,    86,    87,    88,
-    89,    90,     0,     0,     0,     0,   398,     0,   399,   400,
-   401,     0,     0,   402,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    91,    92,    93,   403,   404,   405,
-   406,   407,   408,     0,     0,     0,     0,     0,    47,    48,
-     0,     0,   395,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,     0,     0,     0,     0,   396,     0,   397,
-   702,     0,     0,     0,     0,     0,   233,     0,     0,     0,
-   398,     0,   399,   400,   401,     0,     0,   402,     0,     0,
-    91,    92,    93,     0,     0,     0,     0,     0,     0,     0,
-   878,   403,   404,   405,   406,   407,   408,     0,     0,    47,
-    48,     0,     0,   395,    67,    68,    69,    70,    71,    72,
-    73,    74,    75,    76,     0,     0,   878,     0,   396,   899,
-   397,   878,   878,     0,     0,     0,     0,     0,     0,   878,
-   878,   398,     0,   399,   400,   401,     0,     0,   402,     0,
-     0,     0,     0,     0,    91,    92,    93,     0,     0,     0,
-     0,     0,   403,   404,   405,   406,   407,   408,     0,     0,
+     0,   894,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   955,     0,     0,     0,     0,     0,     0,     0,     0,
-   878,     0,     0,     0,     0,     0,     0,   878,   878,     0,
-     0,   878,   974,     0,     0,     0,     0,     0,     0,     0,
-   878,     0,     0,     0,     0,    91,    92,    93,     0,     0,
+     0,     0,     0,     0,     0,   894,     0,     0,   914,     0,
+   894,   894,     0,     0,     0,     0,     0,     0,   894,   894,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   878,     0,     0,     0,     0,     0,     0,    47,    48,
-   878,     0,     0,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,     0,     0,     0,     0,   396,     0,   397,
-     0,   878,     0,     0,     0,     0,     0,     0,     0,     0,
-   398,     0,   399,   400,   401,     0,     0,   402,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   878,     0,
-   878,   403,   404,   405,   406,   407,   408,     0,     0,     0,
-    65,    48,   878,     0,    66,    67,    68,    69,    70,    71,
-    72,    73,    74,    75,    76,     0,     0,    47,    48,    77,
-   878,    78,    67,    68,    69,    70,    71,    72,    73,    74,
-    75,    76,    79,     0,    80,     0,     0,   985,   591,   878,
-   878,     0,     0,     0,    91,    92,    93,    47,    48,     0,
-   878,     0,    67,    68,    69,    70,    71,    72,    73,    74,
-    75,    76,     0,     0,     0,     0,     0,     0,   591,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    86,
-    87,    88,    89,    90,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    47,    48,     0,
+     0,   395,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,     0,     0,     0,     0,   396,   507,   397,   969,
+     0,     0,     0,     0,     0,     0,     0,   894,     0,   398,
+     0,   399,   400,   401,   894,   894,   402,     0,   894,   988,
+     0,     0,     0,     0,     0,     0,     0,   894,     0,     0,
+   403,   404,   405,   406,   407,   408,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   894,     0,
+     0,     0,     0,     0,    47,    48,     0,   894,   395,    67,
+    68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
+     0,     0,     0,   396,     0,   397,   707,     0,   894,     0,
+     0,     0,     0,    91,    92,    93,   398,     0,   399,   400,
+   401,     0,     0,   402,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   894,     0,   894,   403,   404,   405,
+   406,   407,   408,     0,     0,     0,   894,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    47,    48,     0,   894,   395,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76,     0,     0,     0,     0,
+   396,     0,   397,   894,   894,     0,     0,     0,     0,     0,
+    91,    92,    93,   398,   894,   399,   400,   401,     0,     0,
+   402,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   403,   404,   405,   406,   407,   408,
+    47,    48,     0,     0,     0,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,     0,     0,    47,    48,   396,
+     0,   397,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,   398,     0,   399,   400,   401,   999,   591,   402,
+     0,     0,     0,     0,     0,     0,     0,    91,    92,    93,
+     0,     0,     0,   403,   404,   405,   406,   407,   408,    65,
+    48,     0,     0,    66,    67,    68,    69,    70,    71,    72,
+    73,    74,    75,    76,     0,     0,    47,    48,    77,     0,
+    78,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,    79,     0,    80,     0,     0,     0,   591,     0,     0,
      0,     0,     0,     0,     0,     0,    91,    92,    93,     0,
-     0,     0,     0,   866,   867,   868,   869,   870,   871,   872,
-   873,     0,     0,    91,    92,    93,     0,     0,     0,     0,
+     0,     0,     0,   882,   883,   884,   885,   886,   887,   888,
+   889,     0,     0,    91,    92,    93,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    86,    87,
+    88,    89,    90,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   866,   867,   868,   869,   870,   871,   872,
-   873,     0,     0,    91,    92,    93,    65,    48,     0,     0,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,     0,     0,     0,     0,    77,     0,    78,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    79,     0,
-    80,    47,    48,     0,     0,   220,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,     0,     0,     0,     0,
-   221,   222,   223,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   224,     0,   225,     0,     0,     0,     0,
-     0,     0,     0,     0,    47,    48,   647,   648,   220,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
-     0,     0,     0,   221,   292,   223,     0,     0,     0,     0,
-     0,     0,    91,    92,    93,     0,   224,     0,   225,    47,
+     0,     0,     0,     0,     0,    91,    92,    93,     0,     0,
+     0,     0,   882,   883,   884,   885,   886,   887,   888,   889,
+     0,     0,    91,    92,    93,    65,    48,     0,     0,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+     0,     0,     0,     0,    77,     0,    78,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    79,     0,    80,
+    47,    48,     0,     0,   220,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,     0,     0,     0,     0,   221,
+   222,   223,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   224,     0,   225,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   651,   652,   653,    47,    48,     0,
+     0,   220,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,     0,     0,     0,     0,   221,   292,   223,     0,
+     0,    91,    92,    93,     0,     0,     0,     0,     0,   224,
+     0,   225,    47,    48,     0,     0,   220,    67,    68,    69,
+    70,    71,    72,    73,    74,    75,    76,     0,     0,     0,
+     0,   221,   335,   223,     0,     0,    91,    92,    93,     0,
+     0,     0,     0,     0,   224,     0,   225,    47,    48,     0,
+     0,   290,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,     0,     0,     0,     0,   176,     0,   177,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   178,
+     0,   179,     0,    91,    92,    93,     0,     0,     0,    47,
     48,     0,     0,   220,    67,    68,    69,    70,    71,    72,
-    73,    74,    75,    76,     0,     0,     0,     0,   221,   335,
-   223,     0,     0,     0,     0,     0,     0,    91,    92,    93,
-     0,   224,     0,   225,    47,    48,     0,     0,   290,    67,
+    73,    74,    75,    76,     0,     0,     0,     0,   221,     0,
+   223,     0,     0,     0,     0,     0,     0,     0,    91,    92,
+    93,   224,     0,   225,    47,    48,     0,     0,     0,    67,
     68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
      0,     0,     0,   176,     0,   177,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   178,     0,   179,     0,
-    91,    92,    93,     0,     0,     0,    47,    48,     0,     0,
-   220,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,     0,     0,     0,     0,   221,     0,   223,     0,     0,
-     0,     0,     0,     0,     0,    91,    92,    93,   224,     0,
-   225,    47,    48,     0,     0,     0,    67,    68,    69,    70,
+     0,     0,     0,    91,    92,    93,   178,     0,   179,    47,
+    48,     0,     0,     0,    67,    68,    69,    70,    71,    72,
+    73,    74,    75,    76,     0,     0,     0,     0,   221,     0,
+   223,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   224,     0,   225,     0,    91,    92,    93,     0,     0,
+     0,    47,    48,     0,     0,     0,    67,    68,    69,    70,
     71,    72,    73,    74,    75,    76,     0,     0,     0,     0,
-   221,     0,   223,     0,     0,     0,     0,     0,     0,     0,
-    91,    92,    93,   224,     0,   225,    47,    48,     0,     0,
-     0,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,     0,     0,     0,     0,   396,     0,   397,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   398,     0,
-   399,     0,    91,    92,    93,     0,     0,     0,     0,     0,
+   396,     0,   397,     0,     0,     0,     0,     0,     0,     0,
+    91,    92,    93,   398,     0,   399,     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,    91,    92,    93,
+     0,     0,     0,     0,     0,    91,    92,    93,     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,    91,    92,    93
+     0,     0,     0,     0,     0,     0,     0,    91,    92,    93
 };
 
 static const short yycheck[] = {    29,
-    24,    49,    37,   404,    11,   810,    27,   111,    43,    86,
-    87,    88,    31,    90,    37,    22,    31,   460,   227,   117,
-    43,   112,   268,   223,   113,   269,   504,    36,   284,    37,
-    26,   110,   251,   176,   135,    43,   255,   283,   111,   395,
-   113,   251,     4,   117,   550,   255,    11,   251,   251,   558,
-   559,   255,   255,   114,   106,    29,   959,   175,   135,   177,
-   665,   719,    24,     5,   669,     7,    52,   115,   574,   575,
-    94,     4,    70,   731,    26,    26,   106,    26,   221,    36,
-    70,   179,    70,    36,   114,   115,   116,   117,   165,    77,
-     3,    87,     5,     6,     7,    30,   185,  1000,   106,    73,
-   847,     3,   123,   581,   134,   179,   114,   115,   116,   117,
-   119,    54,   917,   173,   162,    30,   140,    69,    69,   117,
-     5,     6,     7,   144,    89,    58,    28,   225,   118,   177,
-   339,   229,   879,    68,    29,   142,   171,   197,   198,   582,
-   238,   397,    27,     4,   106,   175,   176,   177,   171,   179,
-   251,   225,   213,    68,   255,   229,    23,   513,   210,    26,
-   893,   819,   119,   171,   238,   217,   119,   175,   176,   177,
-    65,   179,   905,    68,   251,   223,     3,   119,   255,    31,
-   210,   844,   787,   213,    26,   663,   329,   217,   397,    31,
-   139,   221,   438,   223,   143,   225,   902,    24,   442,   229,
-   343,   299,   210,   449,   308,   213,   119,   237,   238,   217,
-   270,   302,   330,   221,   723,   223,    68,   225,   278,    31,
-   883,   229,    24,   104,   303,   299,   435,   257,    31,   290,
-   238,   189,   738,   191,   119,   324,   194,   481,    70,   399,
-   285,     5,     6,     7,    29,    29,   306,    79,    80,   347,
-    24,   209,   412,    55,    28,   474,    68,     3,   318,   992,
-   290,   365,   518,    67,   474,    68,   744,   745,   974,   299,
-   474,   474,    53,   347,     3,   327,    70,   366,    24,   535,
-    65,    65,   290,   936,   363,   364,   429,    81,   941,    29,
-   363,   299,   365,   366,     4,    24,    62,   327,    64,   329,
-   330,  1034,  1035,   322,   747,     3,     4,   322,     6,  1015,
-  1016,  1017,  1018,   343,    24,   345,    45,   347,    47,   327,
-    18,   329,   330,   466,    22,    65,    24,     4,    68,    27,
-   390,   355,     3,   393,   215,   343,     4,   345,   368,   347,
-     5,     6,     7,    18,   433,   375,   304,    24,   369,   397,
-   828,   396,   397,    24,    22,   119,    24,   402,   614,  1012,
-    25,    26,    27,   408,     6,    24,     5,     6,     7,   529,
-   530,   531,   532,   474,   434,   853,    19,   537,    21,     6,
-   425,   147,   401,   264,    26,    27,   401,   488,    27,   155,
-   636,   157,   452,     6,    33,   455,    94,   474,    69,   429,
-    27,     4,    73,    24,   423,   459,     4,    28,   423,     3,
-   291,   488,    25,    26,    27,   296,   476,     3,     4,   496,
-    21,   429,    25,   458,   459,   523,    24,   671,     3,     4,
-    24,   450,    24,     1,   494,   450,   466,   497,    24,   499,
-    32,   471,    19,   871,   872,    41,     5,     6,     7,    24,
-   458,   459,    20,     8,   119,   546,   547,   487,   466,   550,
-   490,   621,   368,   623,   624,   625,    25,    26,    27,   375,
-   524,   525,    49,    50,    51,   579,     3,     4,   538,  1007,
-   119,   558,   559,   574,   575,   539,   540,     8,   533,   524,
-   525,     8,    23,   523,   583,    26,    26,    24,   577,     3,
-     4,   929,   930,    33,   539,   540,    36,    21,   708,   709,
-  1038,  1039,  1040,     3,   942,   523,   524,   525,   578,   617,
-    24,    25,    41,   558,   559,     5,     6,     7,   409,    78,
-    31,   539,   540,   935,    24,   639,   937,   938,    53,   563,
-    41,   422,   944,   591,   565,    25,    70,    27,     4,   951,
-   558,   559,    76,     8,    44,    45,    46,    47,   206,   768,
-   119,    26,   607,    26,    29,     3,     4,    32,   613,    32,
-   647,   648,    99,   100,   101,   102,   103,   104,   105,   106,
-    18,   462,   627,     8,    22,    23,    24,   617,    56,    57,
-    58,    59,  1020,   995,   618,    19,   656,    21,   619,    11,
-  1002,   620,   662,    25,    26,   620,  1034,   631,   808,   617,
-    33,   632,  1014,    70,    71,    19,    70,    21,    75,    73,
-   268,    23,   657,    21,    26,   649,   112,   113,   114,   115,
-   116,    19,   653,    21,   657,   283,   517,    23,    25,   119,
-    26,  1043,  1044,  1045,  1046,   722,   723,   738,    26,   657,
-    28,   696,   712,   683,   684,    93,    94,    23,     3,     4,
-    26,   309,   310,    21,    23,     3,     4,    26,     6,   773,
-    19,   319,    21,   733,     3,     4,    29,    30,   708,   709,
-    18,     4,    23,    26,    22,    26,    24,    25,   723,    18,
-     3,     4,    19,    22,    21,    24,    25,    49,    50,    51,
-   708,   709,     3,     4,    19,    18,    21,     3,     4,    22,
-   755,    24,     3,     4,     4,   723,   761,    33,   763,   764,
-   765,   798,    18,    24,    25,   770,    22,    19,    24,    21,
-    87,    32,   380,    24,   615,     4,   743,   530,   531,   532,
-     8,     9,   766,    25,    26,    87,   394,   628,   769,    25,
-    26,    25,    26,    25,    26,    93,    94,   817,     3,     4,
-    73,   791,   858,    36,    93,    94,     8,   863,   864,    25,
-    26,     3,     4,    18,    70,    25,    26,    22,   808,    24,
-    29,    94,    25,    26,     3,     4,    30,   847,    37,     3,
-   438,     3,     4,   838,    43,    31,   841,    93,    94,    18,
-   808,   449,   832,    22,    30,    24,    97,    31,    99,   100,
-   101,   102,   103,   104,   105,   106,    18,     3,     4,   879,
-    28,   851,     3,     4,   832,    70,   922,    28,   858,    25,
-    26,    31,    18,   863,   864,    25,    22,   933,    24,   884,
-    89,   871,   872,    24,    25,    25,    26,    23,    93,    94,
-   858,    32,    25,    26,    25,   863,   864,    25,    26,    36,
-   109,   110,   111,   112,   113,     6,   873,   963,    25,     3,
-     4,    25,     6,    26,    93,    94,   972,   907,   908,    24,
-   910,    25,    26,   913,    18,   134,    25,    26,    22,    24,
-    24,   898,   922,    27,   107,   108,    27,   993,    64,   929,
-   930,   549,    27,   933,    87,   553,   554,    94,    94,   557,
-    28,   160,   942,    87,   922,    28,    29,    95,    96,    41,
-     3,     4,   171,    30,   173,   933,  1022,  1063,  1064,    23,
-    25,   939,   940,   963,   942,    18,   185,    41,    31,    22,
-     4,    24,   972,    23,   193,    28,     3,     4,   197,   198,
-     8,    23,     4,    26,    33,   963,  1052,   206,     3,     4,
-    94,    18,    21,   993,   972,    22,    87,    24,    25,    24,
-    24,  1001,     8,    18,    30,  1071,  1072,    22,    17,    24,
-    17,     3,     4,    11,    30,   993,  1082,    36,   636,    23,
-  1020,    41,  1022,    25,    25,    25,    18,     8,    25,    68,
-    22,    30,    24,    94,  1034,  1053,    31,    31,   257,     8,
-    31,    94,  1020,    23,  1022,    62,    25,     3,     4,   268,
-   269,   270,  1052,    25,    43,    29,    19,  1035,    25,   278,
-    25,    25,    18,    21,   283,    25,    22,    94,    24,     8,
-    25,  1071,  1072,    25,  1052,    68,    64,    25,    27,    94,
-    66,    66,  1082,   302,   303,    69,    31,   306,    26,   308,
-   309,   310,    25,  1071,  1072,    87,    36,   715,    21,   318,
-   319,    19,    94,    28,  1082,   324,     8,     9,    10,    11,
-    12,    13,    14,    15,    16,    17,    22,    68,     3,     4,
-     5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    69,    68,    23,    26,    22,    94,    24,
-    25,    25,    74,    40,   363,   364,   365,   366,    28,   368,
-    35,    40,    37,    63,    68,    26,   375,    69,    69,    72,
-    21,   380,    69,    87,    18,    87,    26,    23,    34,    22,
-    69,   390,    30,     8,   393,   394,    22,    28,    26,    19,
-     8,    18,    18,     3,     3,     4,     5,     6,     7,     8,
-     9,    10,    11,    12,    13,    14,    15,    16,    17,    26,
-    18,     4,    24,    22,    43,    24,    25,   109,   110,   111,
-    22,    22,    18,    22,   433,   434,    35,    24,    37,   438,
-     8,     8,     3,   442,   109,   110,   111,    18,    30,    11,
-   449,    11,    30,   452,   119,    19,   455,     8,    24,   458,
-   459,    33,    11,    11,    11,    11,    18,     8,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,   476,    18,    18,
-    18,    40,   481,    24,    19,    19,    19,    11,   487,    25,
-    11,    11,   137,    25,   106,   494,    26,    25,   497,    28,
-   499,    28,   114,   115,   116,   117,    19,    19,    19,    40,
-   109,   110,   111,    19,     0,    25,    25,    25,    25,    21,
-   119,    21,     0,   135,   134,   524,   525,   487,   668,   785,
-   677,   742,   500,   729,   915,   887,  1001,   851,   817,   538,
-   539,   540,  1035,   992,  1057,  1020,  1028,   546,   547,   548,
-   549,   550,    18,    18,   553,   554,    97,    41,   557,   558,
-   559,   678,   683,   175,   176,   177,    57,   179,   109,   110,
-   111,   252,    57,    43,   171,   574,   575,   121,   577,   578,
-   579,   551,   721,   494,   583,   497,   474,   112,   255,   723,
-   547,   488,   559,   541,   761,   396,   617,   758,   210,   709,
-   808,   213,   917,   756,   345,   217,   397,    -1,   553,   221,
-    -1,   223,    -1,   225,    -1,    -1,    -1,   229,    -1,    -1,
-    -1,    -1,     3,     4,    -1,    -1,   238,     8,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,   636,    -1,    -1,
-   639,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    35,    -1,    37,   656,   657,    -1,
-    -1,    -1,    -1,   662,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   671,    -1,    -1,    -1,    -1,    -1,   290,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   299,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    11,    49,    37,    24,    37,    31,   404,   111,    43,    27,
+    43,    22,   223,    86,    87,    88,   268,    90,   227,   503,
+   189,   269,   191,   113,   284,   194,   251,   110,   459,    37,
+   255,   283,   117,   112,    31,    43,   826,   106,   549,   135,
+   209,   104,    11,   251,   251,     3,    29,   255,   255,    26,
+   111,   251,   113,   117,   496,   255,   395,   724,   176,    31,
+   558,   559,   135,   574,   575,   114,    24,   115,     4,   175,
+   670,   177,    70,    94,   674,   742,   106,     3,     5,     6,
+     7,   908,    26,    81,   114,   115,   116,   117,    54,    26,
+    73,    29,   165,   920,   179,   185,    68,   581,   106,    25,
+    27,   887,   888,   221,   134,   123,   114,   115,   116,   117,
+    70,    69,    52,   555,   162,   179,     4,    77,    30,   140,
+    89,     3,    58,     5,     6,     7,   144,    65,    70,   177,
+   339,   142,     5,     6,     7,   304,   171,   397,   171,   917,
+   225,   210,   932,    87,   229,   175,   176,   177,   217,   179,
+    87,   582,   215,   238,    27,   251,    68,   943,   944,   255,
+    33,   225,   139,   171,   213,   229,   143,   175,   176,   177,
+   956,   179,   839,   512,   238,   223,   118,     4,   251,  1006,
+   210,    36,   255,   213,   668,    31,   438,   217,   397,    25,
+    26,   221,   119,   223,    36,   225,   448,    24,     5,   229,
+     7,   264,   210,   803,   308,   213,    26,   237,   238,   217,
+   988,   329,    36,   221,   299,   223,    70,   225,  1045,  1046,
+   303,   229,    68,   302,   330,   343,   435,   257,   291,    67,
+   238,   310,   480,   296,   324,   299,   734,   119,   749,   206,
+    30,   290,    23,   173,    24,    26,   119,  1033,   473,    69,
+  1028,  1029,  1030,  1031,     5,     6,     7,   517,   327,  1045,
+   290,   365,   347,   117,   119,   473,   473,   197,   198,   299,
+    29,   755,   756,   473,   534,    55,   366,   119,    68,   106,
+   363,   364,   290,   347,    53,   950,    26,     5,     6,     7,
+   955,   299,    18,    31,   285,   119,   322,   327,     4,   329,
+   330,   268,   363,     3,   365,   366,    65,    25,    26,    27,
+    24,   429,   119,   343,     1,   345,   283,   347,    24,   327,
+   862,   329,   330,     3,    24,   322,    31,   758,   458,    69,
+    68,     3,    21,    20,   355,   343,    41,   345,   368,   347,
+   270,     3,     4,   433,    24,   375,   409,   465,   278,   397,
+    18,   369,   319,    62,   614,    64,    28,   899,     4,   422,
+  1025,    24,   846,    25,    44,    45,    46,    47,   119,    32,
+     5,     6,     7,    21,     3,   401,   306,   473,    24,   309,
+   310,   550,   551,    24,   636,   869,    41,    28,   318,   368,
+    25,   487,    27,   523,   524,    24,   375,   423,   461,   429,
+   473,   119,    70,    71,   401,   396,   397,    75,   538,   539,
+     3,   402,     4,   380,   487,    29,    45,   408,    47,   903,
+     6,   429,   495,   449,   457,   458,   423,   394,   676,    26,
+    22,    24,    24,    29,   425,   465,    33,   522,   147,    36,
+   470,    27,    23,     3,     4,    26,   155,     4,   157,   457,
+   458,    65,   449,   516,    68,     3,   486,   465,    18,   489,
+   390,     8,    22,   393,    24,    25,   545,   546,    25,    65,
+   549,   438,    68,     8,   399,   579,    24,   646,     5,     6,
+     7,   448,  1020,    70,   119,   558,   559,   412,    19,    76,
+   523,   524,   522,   583,   577,   574,   575,     8,    25,    26,
+    27,    26,   713,   714,   434,   538,   539,    32,     3,     4,
+    53,  1049,  1050,  1051,   522,   523,   524,     6,    49,    50,
+    51,   451,    41,    18,   454,   558,   559,    22,    23,    24,
+   538,   539,   617,    93,    94,   639,    25,    26,    27,     3,
+     4,   532,   563,   591,    78,   475,    70,   565,     3,     4,
+   558,   559,   615,   951,   952,    79,    80,   726,   727,   728,
+    24,    25,     8,   493,     6,   628,   496,     4,   498,    24,
+   779,     4,     3,     4,     8,     3,     4,    26,   651,   652,
+   653,   548,    31,   874,    26,    27,   949,   617,   879,   880,
+   557,    24,   119,    24,   620,   958,    24,   618,    93,    94,
+     4,   619,   965,   528,   529,   530,   531,   537,    24,   617,
+   631,   536,    28,   824,   632,    26,   607,    28,    22,    11,
+    24,    23,   613,   620,    26,   555,   556,   662,    23,   662,
+    19,    26,    21,   654,     3,     4,   627,    33,    26,    23,
+   658,    29,    26,    21,    32,   936,  1009,    70,   578,    18,
+    73,    25,  1015,    22,   662,    24,   947,    21,   688,   689,
+   733,   734,   831,    23,  1027,    26,    26,     3,     4,   636,
+   749,    99,   100,   101,   102,   103,   104,   105,   106,    19,
+   784,    21,     4,   713,   714,    19,   977,    21,    24,     3,
+     4,  1054,  1055,  1056,  1057,   986,   621,     4,   623,   624,
+   625,   734,    70,    71,    33,   713,   714,    75,     3,     4,
+   701,     6,     4,     3,     4,    19,  1007,    21,    87,    29,
+    30,     3,     4,    18,     6,    94,   734,    22,    18,    24,
+    25,   661,    22,    87,    24,    25,    18,   667,     8,     9,
+    22,   814,    24,   754,  1035,    27,   112,   113,   114,   115,
+   116,     8,    19,   720,    21,    87,   777,     3,     4,    25,
+    26,    97,   780,    99,   100,   101,   102,   103,   104,   105,
+   106,    19,  1063,    21,    19,   766,    21,   807,    24,    25,
+    19,   772,    21,   774,   775,   776,    32,   717,     3,     4,
+   781,  1082,  1083,    36,   824,    49,    50,    51,    93,    94,
+    25,    26,  1093,    93,    94,    25,    26,    29,    31,    24,
+    25,    30,    94,     3,   744,    37,   824,    32,    25,    26,
+   850,    43,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    56,    57,    58,    59,    30,   867,    24,    31,
+     3,     4,   850,     6,   874,   529,   530,   531,    18,   879,
+   880,    25,    26,     3,     4,    18,    28,   887,   888,    22,
+   790,    24,     3,     4,    27,   856,   874,    89,   859,    25,
+    26,   879,   880,    25,    26,     3,     4,    18,   889,    25,
+    26,    22,    31,    24,    28,    25,    26,   109,   110,   111,
+   112,   113,   922,   923,    25,   925,    25,    26,   928,    25,
+    26,    25,   913,    25,    26,    23,   936,   837,     6,   900,
+    25,    97,   134,   943,   944,    25,    26,   947,    25,    26,
+    25,    26,    36,   109,   110,   111,   956,    26,   936,    70,
+    25,    94,   107,   108,    28,    29,    95,    96,   160,   947,
+     3,     4,  1074,  1075,    24,   953,   954,   977,   956,   171,
+    24,   173,    93,    94,    27,    18,   986,    27,    64,    22,
+    87,    24,    87,   185,    94,   895,    28,    23,    25,   977,
+    41,   193,    30,    41,     4,   197,   198,  1007,   986,    31,
+    23,     8,    23,     4,   206,     3,     4,    26,     8,     9,
+    10,    11,    12,    13,    14,    15,    16,    17,    33,  1007,
+    18,    24,    21,  1033,    22,  1035,    24,    70,    24,    87,
+    28,    17,    17,     3,     4,  1045,  1064,    30,    11,    36,
+     8,     3,     4,    30,    23,  1033,    26,  1035,    18,    41,
+    93,    94,    22,  1063,    24,   257,    18,    28,  1046,    25,
+    22,    25,    24,    25,     8,    30,   268,   269,   270,     3,
+     4,    31,  1082,  1083,    31,  1063,   278,    31,     3,     4,
+    94,   283,     8,  1093,    18,    68,    23,    25,    22,    25,
+    24,    43,    25,    18,  1082,  1083,    94,    22,    29,    24,
+   302,   303,    25,    25,   306,  1093,   308,   309,   310,   109,
+   110,   111,    62,    19,    21,    25,   318,   319,    64,     3,
+     4,    25,   324,    93,    94,    68,    25,    25,    69,     8,
+     3,     4,    94,    27,    18,    31,    66,    66,    22,    73,
+    24,    23,    25,    36,    21,    18,    22,   106,    19,    22,
+    28,    24,    69,    68,    74,   114,   115,   116,   117,    68,
+    94,   363,   364,   365,   366,    23,   368,    26,    25,    94,
+    40,    40,    28,   375,    63,    26,   135,    68,   380,    33,
+    72,    69,    69,    21,    25,    87,    87,    18,   390,    69,
+    26,   393,   394,     3,     4,     5,     6,     7,     8,     9,
+    10,    11,    12,    13,    14,    15,    16,    17,    23,    34,
+    94,    30,    22,     8,    24,    25,   175,   176,   177,    22,
+   179,    94,    28,    19,     8,    35,    18,    37,    18,     3,
+    18,   433,   434,    26,     4,    24,   438,    22,    43,    22,
+   442,    18,    24,    22,    19,     8,   448,     3,    19,   451,
+    30,   210,   454,    18,   213,   457,   458,    11,   217,    11,
+    24,    30,   221,     8,   223,    33,   225,    11,    11,    11,
+   229,    11,    18,   475,    40,    25,    11,    18,   480,   238,
+    18,    18,    11,    19,   486,    19,    19,    11,     0,    40,
+   137,   493,    19,    25,   496,    25,   498,    28,    19,   109,
+   110,   111,    28,    19,    19,    25,    25,    25,    25,   119,
+    21,    21,     0,   134,   673,   486,   801,   682,   499,   753,
+   740,   523,   524,  1014,   930,   895,   867,   837,  1006,  1046,
+  1068,   290,  1033,  1041,    18,   537,   538,   539,    18,    41,
+   299,   683,    43,   545,   546,   547,   548,   549,    57,   551,
+   688,    57,   252,   555,   556,   557,   558,   559,   171,   121,
+   552,   732,   790,   112,   546,   493,   559,   734,   327,   255,
+   329,   330,   574,   575,   473,   577,   578,   579,   540,   617,
+   772,   583,   769,   396,   343,   714,   345,   487,   347,   932,
+   767,   824,   345,   397,   646,   354,     3,     4,     5,     6,
+     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    25,    -1,
+    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,
+    37,    38,    39,    -1,   636,    42,    -1,   639,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,
+    57,    58,    59,    60,    61,    -1,    -1,    -1,    -1,   661,
+   662,    -1,    -1,    -1,    -1,   667,    -1,    -1,    -1,    -1,
+   429,    -1,    -1,    -1,   676,    -1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    25,
+    -1,    -1,   109,   110,   111,    -1,   465,    -1,    -1,    35,
+    -1,    37,   119,    -1,    -1,   717,    -1,    -1,   720,    -1,
+    -1,    -1,   724,    -1,    -1,    -1,    -1,    -1,   487,    -1,
+   489,    -1,   734,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   742,    -1,   744,    -1,    -1,    -1,    -1,   749,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   712,    -1,   327,   715,   329,   330,    -1,
-   719,    -1,    -1,    -1,   723,    -1,    -1,    -1,   109,   110,
-   111,   343,   731,   345,   733,   347,    -1,    -1,    -1,   738,
-    -1,    -1,   354,     3,     4,     5,     6,     7,     8,     9,
-    10,    11,    12,    13,    14,    15,    16,    17,    -1,    -1,
-    -1,    -1,    22,    -1,    24,    25,    -1,    27,    -1,    -1,
-    -1,    -1,    -1,    -1,   773,    35,    -1,    37,    38,    39,
-    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    56,    57,    58,    59,
-    60,    61,     3,     4,     5,     6,     7,     8,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,   429,   817,    -1,
-   819,    22,    -1,    24,    25,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    35,    -1,    37,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   847,   109,
-   110,   111,    -1,    -1,   466,    -1,    -1,    -1,    -1,   119,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   866,   867,   868,
-   869,   870,    -1,    -1,    -1,    -1,   488,    -1,   490,    -1,
-   879,     3,     4,    -1,    -1,    -1,     8,     9,    10,    11,
-    12,    13,    14,    15,    16,    17,    -1,    -1,    -1,    -1,
-    -1,    -1,    24,    -1,    -1,    -1,    -1,   906,   109,   110,
-   111,   523,    -1,    -1,    -1,    -1,    38,    39,   119,    -1,
-    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   935,    -1,    60,    -1,
-    -1,    -1,    -1,    -1,    -1,   944,    -1,    -1,    -1,    -1,
-    -1,    -1,   951,    -1,   953,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
-    92,    -1,    -1,    -1,    -1,    -1,    98,    99,   100,   101,
-   102,   103,   104,   105,   106,    -1,    -1,   109,   110,   111,
-    -1,    -1,    -1,    -1,    -1,    -1,   995,    -1,    -1,    -1,
-    -1,    -1,    -1,  1002,    -1,   617,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,  1014,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1028,
+    -1,    -1,    -1,   522,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,  1043,  1044,  1045,  1046,     3,     4,
-    -1,    -1,     7,     8,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    -1,    -1,    -1,    -1,    22,    -1,    24,
-    -1,   683,    -1,   685,    -1,    -1,    -1,    -1,    -1,    -1,
-    35,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    44,
-    45,    46,    47,    48,    -1,    -1,   708,   709,    -1,    -1,
-    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,     8,
+    -1,    -1,   784,   109,   110,   111,    -1,    -1,   790,    -1,
+    -1,    -1,    -1,   119,     3,     4,     5,     6,     7,     8,
      9,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
-    -1,    -1,    -1,    22,    23,    24,    -1,    82,    83,    84,
-    85,    86,    -1,    -1,    -1,    -1,    35,    -1,    37,    38,
-    39,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   109,   110,   111,    56,    57,    58,
-    59,    60,    61,    -1,    -1,    -1,    -1,    -1,     3,     4,
-    -1,    -1,     7,     8,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    -1,    -1,    -1,    -1,    22,    -1,    24,
-    25,    -1,    -1,    -1,    -1,    -1,   808,    -1,    -1,    -1,
-    35,    -1,    37,    38,    39,    -1,    -1,    42,    -1,    -1,
+    -1,    -1,    -1,    22,    -1,    24,    25,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,    37,    -1,
+    -1,    -1,    -1,    -1,    -1,   837,    -1,   839,     3,     4,
+    -1,    -1,    -1,     8,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    -1,    -1,    -1,    -1,    -1,   617,    24,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    38,    39,    -1,    -1,    42,    -1,    -1,
+   882,   883,   884,   885,   886,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   895,    -1,    60,    -1,    -1,    -1,    -1,
    109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   832,    56,    57,    58,    59,    60,    61,    -1,    -1,     3,
-     4,    -1,    -1,     7,     8,     9,    10,    11,    12,    13,
-    14,    15,    16,    17,    -1,    -1,   858,    -1,    22,   861,
-    24,   863,   864,    -1,    -1,    -1,    -1,    -1,    -1,   871,
-   872,    35,    -1,    37,    38,    39,    -1,    -1,    42,    -1,
-    -1,    -1,    -1,    -1,   109,   110,   111,    -1,    -1,    -1,
-    -1,    -1,    56,    57,    58,    59,    60,    61,    -1,    -1,
+   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   921,
+    -1,    -1,    -1,    88,    89,    90,    91,    92,    -1,   688,
+    -1,   690,    -1,    98,    99,   100,   101,   102,   103,   104,
+   105,   106,    -1,    -1,   109,   110,   111,   949,    -1,    -1,
+    -1,    -1,    -1,    -1,   713,   714,   958,    -1,    -1,    -1,
+    -1,    -1,    -1,   965,    -1,   967,    -1,     3,     4,    -1,
+    -1,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,
+    -1,    37,    -1,    -1,    -1,    -1,    -1,  1009,    44,    45,
+    46,    47,    48,  1015,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,  1027,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1041,
+    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,
+    86,    -1,  1054,  1055,  1056,  1057,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   824,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   109,   110,   111,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   913,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   922,    -1,    -1,    -1,    -1,    -1,    -1,   929,   930,    -1,
-    -1,   933,   934,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   942,    -1,    -1,    -1,    -1,   109,   110,   111,    -1,    -1,
+    -1,   850,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   963,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
-   972,    -1,    -1,     8,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    -1,    -1,    -1,    -1,    22,    -1,    24,
-    -1,   993,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    35,    -1,    37,    38,    39,    -1,    -1,    42,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1020,    -1,
-  1022,    56,    57,    58,    59,    60,    61,    -1,    -1,    -1,
-     3,     4,  1034,    -1,     7,     8,     9,    10,    11,    12,
-    13,    14,    15,    16,    17,    -1,    -1,     3,     4,    22,
-  1052,    24,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    35,    -1,    37,    -1,    -1,    23,    24,  1071,
-  1072,    -1,    -1,    -1,   109,   110,   111,     3,     4,    -1,
-  1082,    -1,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    -1,    -1,    -1,    -1,    -1,    -1,    24,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-    83,    84,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   874,    -1,    -1,   877,    -1,
+   879,   880,    -1,    -1,    -1,    -1,    -1,    -1,   887,   888,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,
+    -1,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    -1,    -1,    -1,    -1,    22,    23,    24,   928,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   936,    -1,    35,
+    -1,    37,    38,    39,   943,   944,    42,    -1,   947,   948,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   956,    -1,    -1,
+    56,    57,    58,    59,    60,    61,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   977,    -1,
+    -1,    -1,    -1,    -1,     3,     4,    -1,   986,     7,     8,
+     9,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
+    -1,    -1,    -1,    22,    -1,    24,    25,    -1,  1007,    -1,
+    -1,    -1,    -1,   109,   110,   111,    35,    -1,    37,    38,
+    39,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,  1033,    -1,  1035,    56,    57,    58,
+    59,    60,    61,    -1,    -1,    -1,  1045,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,     3,     4,    -1,  1063,     7,     8,     9,    10,    11,
+    12,    13,    14,    15,    16,    17,    -1,    -1,    -1,    -1,
+    22,    -1,    24,  1082,  1083,    -1,    -1,    -1,    -1,    -1,
+   109,   110,   111,    35,  1093,    37,    38,    39,    -1,    -1,
+    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,    61,
+     3,     4,    -1,    -1,    -1,     8,     9,    10,    11,    12,
+    13,    14,    15,    16,    17,    -1,    -1,     3,     4,    22,
+    -1,    24,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    35,    -1,    37,    38,    39,    23,    24,    42,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,   111,
+    -1,    -1,    -1,    56,    57,    58,    59,    60,    61,     3,
+     4,    -1,    -1,     7,     8,     9,    10,    11,    12,    13,
+    14,    15,    16,    17,    -1,    -1,     3,     4,    22,    -1,
+    24,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    35,    -1,    37,    -1,    -1,    -1,    24,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,   109,   110,   111,    -1,
     -1,    -1,    -1,    99,   100,   101,   102,   103,   104,   105,
    106,    -1,    -1,   109,   110,   111,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,
+    84,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    99,   100,   101,   102,   103,   104,   105,
-   106,    -1,    -1,   109,   110,   111,     3,     4,    -1,    -1,
-     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,
-    37,     3,     4,    -1,    -1,     7,     8,     9,    10,    11,
-    12,    13,    14,    15,    16,    17,    -1,    -1,    -1,    -1,
-    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    35,    -1,    37,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,     3,     4,    83,    84,     7,     8,
-     9,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
-    -1,    -1,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,
-    -1,    -1,   109,   110,   111,    -1,    35,    -1,    37,     3,
+    -1,    -1,    -1,    -1,    -1,   109,   110,   111,    -1,    -1,
+    -1,    -1,    99,   100,   101,   102,   103,   104,   105,   106,
+    -1,    -1,   109,   110,   111,     3,     4,    -1,    -1,     7,
+     8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+    -1,    -1,    -1,    -1,    22,    -1,    24,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,    37,
+     3,     4,    -1,    -1,     7,     8,     9,    10,    11,    12,
+    13,    14,    15,    16,    17,    -1,    -1,    -1,    -1,    22,
+    23,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    35,    -1,    37,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    82,    83,    84,     3,     4,    -1,
+    -1,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    -1,    -1,    -1,    -1,    22,    23,    24,    -1,
+    -1,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    35,
+    -1,    37,     3,     4,    -1,    -1,     7,     8,     9,    10,
+    11,    12,    13,    14,    15,    16,    17,    -1,    -1,    -1,
+    -1,    22,    23,    24,    -1,    -1,   109,   110,   111,    -1,
+    -1,    -1,    -1,    -1,    35,    -1,    37,     3,     4,    -1,
+    -1,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,
+    -1,    37,    -1,   109,   110,   111,    -1,    -1,    -1,     3,
      4,    -1,    -1,     7,     8,     9,    10,    11,    12,    13,
-    14,    15,    16,    17,    -1,    -1,    -1,    -1,    22,    23,
-    24,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,   111,
-    -1,    35,    -1,    37,     3,     4,    -1,    -1,     7,     8,
+    14,    15,    16,    17,    -1,    -1,    -1,    -1,    22,    -1,
+    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,
+   111,    35,    -1,    37,     3,     4,    -1,    -1,    -1,     8,
      9,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
     -1,    -1,    -1,    22,    -1,    24,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,    37,    -1,
-   109,   110,   111,    -1,    -1,    -1,     3,     4,    -1,    -1,
-     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   109,   110,   111,    35,    -1,
-    37,     3,     4,    -1,    -1,    -1,     8,     9,    10,    11,
+    -1,    -1,    -1,   109,   110,   111,    35,    -1,    37,     3,
+     4,    -1,    -1,    -1,     8,     9,    10,    11,    12,    13,
+    14,    15,    16,    17,    -1,    -1,    -1,    -1,    22,    -1,
+    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    35,    -1,    37,    -1,   109,   110,   111,    -1,    -1,
+    -1,     3,     4,    -1,    -1,    -1,     8,     9,    10,    11,
     12,    13,    14,    15,    16,    17,    -1,    -1,    -1,    -1,
     22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   109,   110,   111,    35,    -1,    37,     3,     4,    -1,    -1,
-    -1,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,
-    37,    -1,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,
+   109,   110,   111,    35,    -1,    37,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -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,    -1,    -1,    -1,    -1,   109,   110,   111,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -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,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,   111
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/local/gnu/share/bison.simple"
@@ -2093,695 +2102,671 @@ yyreduce:
   switch (yyn) {
 
 case 2:
-#line 335 "yaccParser/hsparser.y"
+#line 333 "yaccParser/hsparser.y"
 { the_module_name = yyvsp[-1].uid; module_exports = yyvsp[0].ulist; ;
     break;}
 case 4:
-#line 337 "yaccParser/hsparser.y"
+#line 335 "yaccParser/hsparser.y"
 { the_module_name = install_literal("Main"); module_exports = Lnil; ;
     break;}
 case 6:
-#line 343 "yaccParser/hsparser.y"
+#line 341 "yaccParser/hsparser.y"
 {
                 root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-3].ulist),module_exports,yyvsp[-1].ubinding,startlineno);
               ;
     break;}
 case 7:
-#line 347 "yaccParser/hsparser.y"
+#line 345 "yaccParser/hsparser.y"
 {
                 root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-3].ulist),module_exports,yyvsp[-1].ubinding,startlineno);
               ;
     break;}
 case 8:
-#line 352 "yaccParser/hsparser.y"
+#line 350 "yaccParser/hsparser.y"
 {
                 root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-1].ulist),module_exports,mknullbind(),startlineno);
               ;
     break;}
 case 9:
-#line 356 "yaccParser/hsparser.y"
+#line 354 "yaccParser/hsparser.y"
 {
                 root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-1].ulist),module_exports,mknullbind(),startlineno);
               ;
     break;}
 case 10:
-#line 362 "yaccParser/hsparser.y"
+#line 360 "yaccParser/hsparser.y"
 {
                 root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-1].ulist),module_exports,mknullbind(),startlineno);
               ;
     break;}
 case 11:
-#line 366 "yaccParser/hsparser.y"
+#line 364 "yaccParser/hsparser.y"
 {
                 root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-1].ulist),module_exports,mknullbind(),startlineno);
               ;
     break;}
 case 12:
-#line 372 "yaccParser/hsparser.y"
+#line 370 "yaccParser/hsparser.y"
 { yyval.ulist = Lnil; ;
     break;}
 case 13:
-#line 373 "yaccParser/hsparser.y"
+#line 371 "yaccParser/hsparser.y"
 { yyval.ulist = yyvsp[-1].ulist; ;
     break;}
 case 14:
-#line 377 "yaccParser/hsparser.y"
+#line 375 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uentid); ;
     break;}
 case 15:
-#line 378 "yaccParser/hsparser.y"
+#line 376 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uentid); ;
     break;}
 case 16:
-#line 382 "yaccParser/hsparser.y"
+#line 380 "yaccParser/hsparser.y"
 { yyval.uentid = mkentid(yyvsp[0].uid); ;
     break;}
 case 17:
-#line 383 "yaccParser/hsparser.y"
+#line 381 "yaccParser/hsparser.y"
 { yyval.uentid = mkenttype(yyvsp[0].uid); ;
     break;}
 case 18:
-#line 384 "yaccParser/hsparser.y"
+#line 382 "yaccParser/hsparser.y"
 { yyval.uentid = mkenttypeall(yyvsp[-3].uid); ;
     break;}
 case 19:
-#line 386 "yaccParser/hsparser.y"
+#line 384 "yaccParser/hsparser.y"
 { yyval.uentid = mkenttypecons(yyvsp[-3].uid,yyvsp[-1].ulist);
                  /* should be a datatype with cons representing all constructors */
                ;
     break;}
 case 20:
-#line 390 "yaccParser/hsparser.y"
+#line 388 "yaccParser/hsparser.y"
 { yyval.uentid = mkentclass(yyvsp[-3].uid,yyvsp[-1].ulist);
                  /* should be a class with vars representing all Class operations */
                ;
     break;}
 case 21:
-#line 394 "yaccParser/hsparser.y"
+#line 392 "yaccParser/hsparser.y"
 { yyval.uentid = mkentclass(yyvsp[-2].uid,Lnil);
                  /* "tycon" should be a class with no operations */
                ;
     break;}
 case 22:
-#line 398 "yaccParser/hsparser.y"
+#line 396 "yaccParser/hsparser.y"
 { yyval.uentid = mkentmod(yyvsp[-1].uid);
                  /* "tycon" is a module id (but "modid" is bad for your identifier's health [KH])  */
                ;
     break;}
 case 23:
-#line 404 "yaccParser/hsparser.y"
+#line 402 "yaccParser/hsparser.y"
 { yyval.ulist = yyvsp[-1].ulist; hidden = FALSE; ;
     break;}
 case 24:
-#line 405 "yaccParser/hsparser.y"
+#line 403 "yaccParser/hsparser.y"
 { yyval.ulist = yyvsp[-1].ulist; hidden = TRUE; ;
     break;}
 case 25:
-#line 406 "yaccParser/hsparser.y"
+#line 404 "yaccParser/hsparser.y"
 { yyval.ulist = Lnil; hidden = FALSE; ;
     break;}
 case 26:
-#line 409 "yaccParser/hsparser.y"
+#line 407 "yaccParser/hsparser.y"
 { yyval.ulist = Lnil; ;
     break;}
 case 27:
-#line 410 "yaccParser/hsparser.y"
+#line 408 "yaccParser/hsparser.y"
 { yyval.ulist = yyvsp[0].ulist; ;
     break;}
 case 28:
-#line 414 "yaccParser/hsparser.y"
+#line 412 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uentid); ;
     break;}
 case 29:
-#line 415 "yaccParser/hsparser.y"
+#line 413 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uentid); ;
     break;}
 case 30:
-#line 419 "yaccParser/hsparser.y"
+#line 417 "yaccParser/hsparser.y"
 { yyval.uentid = mkentid(yyvsp[0].uid); ;
     break;}
 case 31:
-#line 420 "yaccParser/hsparser.y"
+#line 418 "yaccParser/hsparser.y"
 { yyval.uentid = mkenttype(yyvsp[0].uid); ;
     break;}
 case 32:
-#line 421 "yaccParser/hsparser.y"
+#line 419 "yaccParser/hsparser.y"
 { yyval.uentid = mkenttypeall(yyvsp[-3].uid); ;
     break;}
 case 33:
-#line 423 "yaccParser/hsparser.y"
+#line 421 "yaccParser/hsparser.y"
 { yyval.uentid = mkenttypecons(yyvsp[-3].uid,yyvsp[-1].ulist);
                  /* should be a datatype with cons representing all constructors */
                ;
     break;}
 case 34:
-#line 427 "yaccParser/hsparser.y"
+#line 425 "yaccParser/hsparser.y"
 { yyval.uentid = mkentclass(yyvsp[-3].uid,yyvsp[-1].ulist);
                  /* should be a class with vars representing all Class operations */
                ;
     break;}
 case 35:
-#line 431 "yaccParser/hsparser.y"
+#line 429 "yaccParser/hsparser.y"
 { yyval.uentid = mkentclass(yyvsp[-2].uid,Lnil);
                  /* "tycon" should be a class with no operations */
                ;
     break;}
 case 36:
-#line 440 "yaccParser/hsparser.y"
+#line 438 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkidata_pragma(yyvsp[-2].ulist, yyvsp[-1].ulist); ;
     break;}
 case 37:
-#line 442 "yaccParser/hsparser.y"
+#line 440 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkidata_pragma(Lnil, yyvsp[-1].ulist); ;
     break;}
 case 38:
-#line 443 "yaccParser/hsparser.y"
+#line 441 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 39:
-#line 448 "yaccParser/hsparser.y"
+#line 446 "yaccParser/hsparser.y"
 { yyval.ulist = yyvsp[0].ulist; ;
     break;}
 case 40:
-#line 449 "yaccParser/hsparser.y"
+#line 447 "yaccParser/hsparser.y"
 { yyval.ulist = Lnil; ;
     break;}
 case 41:
-#line 453 "yaccParser/hsparser.y"
+#line 451 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uhpragma); ;
     break;}
 case 42:
-#line 455 "yaccParser/hsparser.y"
+#line 453 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
     break;}
 case 43:
-#line 459 "yaccParser/hsparser.y"
+#line 457 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkidata_pragma_4s(yyvsp[-1].ulist); ;
     break;}
 case 44:
-#line 463 "yaccParser/hsparser.y"
+#line 461 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkitype_pragma(); ;
     break;}
 case 45:
-#line 464 "yaccParser/hsparser.y"
+#line 462 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 46:
-#line 468 "yaccParser/hsparser.y"
+#line 466 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkiclas_pragma(yyvsp[-1].ulist); ;
     break;}
 case 47:
-#line 469 "yaccParser/hsparser.y"
+#line 467 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 48:
-#line 474 "yaccParser/hsparser.y"
+#line 472 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkiclasop_pragma(yyvsp[-2].uhpragma, yyvsp[-1].uhpragma); ;
     break;}
 case 49:
-#line 476 "yaccParser/hsparser.y"
+#line 474 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 50:
-#line 481 "yaccParser/hsparser.y"
+#line 479 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkiinst_simpl_pragma(yyvsp[-2].uid, yyvsp[-1].uhpragma); ;
     break;}
 case 51:
-#line 484 "yaccParser/hsparser.y"
+#line 482 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkiinst_const_pragma(yyvsp[-3].uid, yyvsp[-2].uhpragma, yyvsp[-1].ulist); ;
     break;}
 case 52:
-#line 487 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkiinst_spec_pragma(yyvsp[-3].uid, yyvsp[-2].uhpragma, yyvsp[-1].ulist); ;
+#line 485 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 53:
 #line 490 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkno_pragma(); ;
+{ yyval.uid = yyvsp[0].uid; ;
     break;}
 case 54:
-#line 495 "yaccParser/hsparser.y"
-{ yyval.uid = yyvsp[0].uid; ;
+#line 492 "yaccParser/hsparser.y"
+{ yyval.uid = install_literal(""); ;
     break;}
 case 55:
 #line 497 "yaccParser/hsparser.y"
-{ yyval.uid = install_literal(""); ;
+{ yyval.uhpragma = yyvsp[-1].uhpragma; ;
     break;}
 case 56:
-#line 500 "yaccParser/hsparser.y"
-{ yyval.ulist = yyvsp[0].ulist; ;
+#line 499 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 57:
-#line 505 "yaccParser/hsparser.y"
-{ yyval.uhpragma = yyvsp[-1].uhpragma; ;
+#line 504 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 58:
-#line 507 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkno_pragma(); ;
+#line 506 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkigen_pragma(yyvsp[-5].uhpragma, yyvsp[-4].uhpragma, yyvsp[-3].uhpragma, yyvsp[-2].uhpragma, yyvsp[-1].uhpragma, yyvsp[0].ulist); ;
     break;}
 case 59:
-#line 512 "yaccParser/hsparser.y"
+#line 510 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 60:
-#line 514 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkigen_pragma(yyvsp[-5].uhpragma, yyvsp[-4].uhpragma, yyvsp[-3].uhpragma, yyvsp[-2].uhpragma, yyvsp[-1].uhpragma, yyvsp[0].ulist); ;
+#line 511 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiarity_pragma(yyvsp[0].ustring); ;
     break;}
 case 61:
-#line 518 "yaccParser/hsparser.y"
+#line 515 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 62:
-#line 519 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkiarity_pragma(yyvsp[0].ustring); ;
+#line 516 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiupdate_pragma(yyvsp[0].ustring); ;
     break;}
 case 63:
-#line 523 "yaccParser/hsparser.y"
+#line 520 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 64:
-#line 524 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkiupdate_pragma(yyvsp[0].ustring); ;
+#line 521 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkideforest_pragma(); ;
     break;}
 case 65:
-#line 528 "yaccParser/hsparser.y"
+#line 525 "yaccParser/hsparser.y"
 { yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 66:
-#line 529 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkideforest_pragma(); ;
+#line 526 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkistrictness_pragma(installHstring(1, "B"),
+                                     /* _!_ = COCON = bottom */ mkno_pragma());
+                                   ;
     break;}
 case 67:
-#line 533 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkno_pragma(); ;
+#line 530 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkistrictness_pragma(yyvsp[-1].uhstring, yyvsp[0].uhpragma); ;
     break;}
 case 68:
 #line 534 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkistrictness_pragma(installHstring(1, "B"),
-                                     /* _!_ = COCON = bottom */ mkno_pragma());
-                                   ;
+{ yyval.uhpragma = yyvsp[-1].uhpragma; ;
     break;}
 case 69:
-#line 538 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkistrictness_pragma(yyvsp[-1].uhstring, yyvsp[0].uhpragma); ;
+#line 535 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 70:
-#line 542 "yaccParser/hsparser.y"
-{ yyval.uhpragma = yyvsp[-1].uhpragma; ;
+#line 538 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
     break;}
 case 71:
-#line 543 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkno_pragma(); ;
+#line 540 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkimagic_unfolding_pragma(yyvsp[0].uid); ;
     break;}
 case 72:
-#line 546 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkno_pragma(); ;
+#line 542 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiunfolding_pragma(yyvsp[-1].uhpragma, yyvsp[0].ucoresyn); ;
     break;}
 case 73:
-#line 548 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkimagic_unfolding_pragma(yyvsp[0].uid); ;
+#line 547 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiunfold_always(); ;
     break;}
 case 74:
-#line 550 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkiunfolding_pragma(yyvsp[-1].uhpragma, yyvsp[0].ucoresyn); ;
+#line 549 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiunfold_if_args(yyvsp[-3].ustring, yyvsp[-2].ustring, yyvsp[-1].uid, yyvsp[0].ustring); ;
     break;}
 case 75:
-#line 555 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkiunfold_always(); ;
+#line 553 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uhpragma); ;
     break;}
 case 76:
-#line 557 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkiunfold_if_args(yyvsp[-3].ustring, yyvsp[-2].ustring, yyvsp[-1].uid, yyvsp[0].ustring); ;
+#line 554 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
     break;}
 case 77:
-#line 561 "yaccParser/hsparser.y"
-{ yyval.ulist = lsing(yyvsp[0].uhpragma); ;
+#line 558 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
     break;}
 case 78:
-#line 562 "yaccParser/hsparser.y"
-{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
+#line 559 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[0].ulist; ;
     break;}
 case 79:
-#line 566 "yaccParser/hsparser.y"
-{ yyval.ulist = Lnil; ;
+#line 563 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uhpragma); ;
     break;}
 case 80:
-#line 567 "yaccParser/hsparser.y"
-{ yyval.ulist = yyvsp[0].ulist; ;
+#line 564 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
     break;}
 case 81:
-#line 571 "yaccParser/hsparser.y"
-{ yyval.ulist = lsing(yyvsp[0].uhpragma); ;
+#line 569 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkitype_pragma_pr(yyvsp[-3].ulist, yyvsp[-1].ustring, yyvsp[0].uhpragma); ;
     break;}
 case 82:
-#line 572 "yaccParser/hsparser.y"
-{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
+#line 573 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uttype); ;
     break;}
 case 83:
-#line 577 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkitype_pragma_pr(yyvsp[-3].ulist, yyvsp[-1].ustring, yyvsp[0].uhpragma); ;
+#line 574 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uttype); ;
     break;}
 case 84:
-#line 581 "yaccParser/hsparser.y"
-{ yyval.ulist = lsing(yyvsp[0].uhpragma); ;
+#line 578 "yaccParser/hsparser.y"
+{ yyval.uttype = mkty_maybe_nothing(); ;
     break;}
 case 85:
-#line 582 "yaccParser/hsparser.y"
-{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uhpragma); ;
+#line 579 "yaccParser/hsparser.y"
+{ yyval.uttype = mkty_maybe_just(yyvsp[0].uttype); ;
     break;}
 case 86:
-#line 587 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkiinst_pragma_3s(yyvsp[-4].ulist, yyvsp[-2].ustring, yyvsp[-1].uhpragma, yyvsp[0].ulist); ;
+#line 583 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uhpragma); ;
     break;}
 case 87:
-#line 591 "yaccParser/hsparser.y"
-{ yyval.ulist = lsing(yyvsp[0].uttype); ;
+#line 584 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
     break;}
 case 88:
-#line 592 "yaccParser/hsparser.y"
-{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uttype); ;
+#line 593 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiname_pragma_pr(yyvsp[-4].uid, yyvsp[-1].uhpragma); ;
     break;}
 case 89:
-#line 596 "yaccParser/hsparser.y"
-{ yyval.uttype = mkty_maybe_nothing(); ;
+#line 599 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiname_pragma_pr(yyvsp[-2].uid, yyvsp[0].uhpragma); ;
     break;}
 case 90:
-#line 597 "yaccParser/hsparser.y"
-{ yyval.uttype = mkty_maybe_just(yyvsp[0].uttype); ;
+#line 610 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcolam(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
     break;}
 case 91:
-#line 601 "yaccParser/hsparser.y"
-{ yyval.ulist = Lnil; ;
+#line 612 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcotylam(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
     break;}
 case 92:
-#line 602 "yaccParser/hsparser.y"
-{ yyval.ulist = yyvsp[0].ulist; ;
+#line 614 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcocon(mkco_id(yyvsp[-2].uid), yyvsp[-1].ulist, yyvsp[0].ulist); ;
     break;}
 case 93:
-#line 606 "yaccParser/hsparser.y"
-{ yyval.ulist = lsing(yyvsp[0].uhpragma); ;
+#line 616 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcocon(mkco_orig_id(yyvsp[-3].uid,yyvsp[-2].uid), yyvsp[-1].ulist, yyvsp[0].ulist); ;
     break;}
 case 94:
-#line 607 "yaccParser/hsparser.y"
-{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
+#line 618 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoprim(yyvsp[-2].ucoresyn, yyvsp[-1].ulist, yyvsp[0].ulist); ;
     break;}
 case 95:
-#line 612 "yaccParser/hsparser.y"
-{ yyval.uhpragma = mkiname_pragma_pr(yyvsp[-2].uid, yyvsp[0].uhpragma); ;
+#line 620 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoapp(yyvsp[-1].ucoresyn, yyvsp[0].ulist); ;
     break;}
 case 96:
-#line 621 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcolam(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
+#line 622 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcotyapp(yyvsp[-3].ucoresyn, yyvsp[-1].uttype); ;
     break;}
 case 97:
-#line 623 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcotylam(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
+#line 624 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcocase(yyvsp[-4].ucoresyn, yyvsp[-1].ucoresyn); ;
     break;}
 case 98:
-#line 625 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcocon(mkco_id(yyvsp[-2].uid), yyvsp[-1].ulist, yyvsp[0].ulist); ;
+#line 626 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcolet(mkcononrec(yyvsp[-5].ucoresyn, yyvsp[-3].ucoresyn), yyvsp[0].ucoresyn); ;
     break;}
 case 99:
-#line 627 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcocon(mkco_orig_id(yyvsp[-3].uid,yyvsp[-2].uid), yyvsp[-1].ulist, yyvsp[0].ulist); ;
+#line 628 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcolet(mkcorec(yyvsp[-3].ulist), yyvsp[0].ucoresyn); ;
     break;}
 case 100:
-#line 629 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcoprim(yyvsp[-2].ucoresyn, yyvsp[-1].ulist, yyvsp[0].ulist); ;
+#line 630 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoscc(yyvsp[-2].ucoresyn, yyvsp[0].ucoresyn); ;
     break;}
 case 101:
 #line 631 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcoapp(yyvsp[-1].ucoresyn, yyvsp[0].ulist); ;
+{ yyval.ucoresyn = mkcoliteral(yyvsp[0].uliteral); ;
     break;}
 case 102:
-#line 633 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcotyapp(yyvsp[-3].ucoresyn, yyvsp[-1].uttype); ;
+#line 632 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcovar(yyvsp[0].ucoresyn); ;
     break;}
 case 103:
-#line 635 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcocase(yyvsp[-4].ucoresyn, yyvsp[-1].ucoresyn); ;
+#line 637 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoalg_alts(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
     break;}
 case 104:
-#line 637 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcolet(mkcononrec(yyvsp[-5].ucoresyn, yyvsp[-3].ucoresyn), yyvsp[0].ucoresyn); ;
+#line 639 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoprim_alts(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
     break;}
 case 105:
-#line 639 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcolet(mkcorec(yyvsp[-3].ulist), yyvsp[0].ucoresyn); ;
+#line 643 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
     break;}
 case 106:
-#line 641 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcoscc(yyvsp[-2].ucoresyn, yyvsp[0].ucoresyn); ;
+#line 644 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
     break;}
 case 107:
-#line 642 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcoliteral(yyvsp[0].uliteral); ;
+#line 648 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoalg_alt(yyvsp[-4].ucoresyn, yyvsp[-3].ulist, yyvsp[-1].ucoresyn); ;
     break;}
 case 108:
-#line 643 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcovar(yyvsp[0].ucoresyn); ;
+#line 653 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
     break;}
 case 109:
-#line 648 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcoalg_alts(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
+#line 654 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
     break;}
 case 110:
-#line 650 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcoprim_alts(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
+#line 658 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoprim_alt(yyvsp[-3].uliteral, yyvsp[-1].ucoresyn); ;
     break;}
 case 111:
-#line 654 "yaccParser/hsparser.y"
-{ yyval.ulist = Lnil; ;
+#line 662 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkconodeflt(); ;
     break;}
 case 112:
-#line 655 "yaccParser/hsparser.y"
-{ yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
+#line 663 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcobinddeflt(yyvsp[-2].ucoresyn, yyvsp[0].ucoresyn); ;
     break;}
 case 113:
-#line 659 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcoalg_alt(yyvsp[-4].ucoresyn, yyvsp[-3].ulist, yyvsp[-1].ucoresyn); ;
+#line 667 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].ucoresyn); ;
     break;}
 case 114:
-#line 664 "yaccParser/hsparser.y"
-{ yyval.ulist = Lnil; ;
+#line 668 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
     break;}
 case 115:
-#line 665 "yaccParser/hsparser.y"
-{ yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
+#line 672 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcorec_pair(yyvsp[-2].ucoresyn, yyvsp[0].ucoresyn); ;
     break;}
 case 116:
-#line 669 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcoprim_alt(yyvsp[-3].uliteral, yyvsp[-1].ucoresyn); ;
+#line 676 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_preludedictscc(yyvsp[0].ucoresyn); ;
     break;}
 case 117:
-#line 673 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkconodeflt(); ;
+#line 677 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_alldictscc(yyvsp[-2].uhstring,yyvsp[-1].uhstring,yyvsp[0].ucoresyn); ;
     break;}
 case 118:
-#line 674 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcobinddeflt(yyvsp[-2].ucoresyn, yyvsp[0].ucoresyn); ;
+#line 679 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_usercc(yyvsp[-4].uhstring,yyvsp[-3].uhstring,yyvsp[-2].uhstring,yyvsp[-1].ucoresyn,yyvsp[0].ucoresyn); ;
     break;}
 case 119:
-#line 678 "yaccParser/hsparser.y"
-{ yyval.ulist = lsing(yyvsp[0].ucoresyn); ;
+#line 681 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_autocc(yyvsp[-4].ucoresyn,yyvsp[-3].uhstring,yyvsp[-2].uhstring,yyvsp[-1].ucoresyn,yyvsp[0].ucoresyn); ;
     break;}
 case 120:
-#line 679 "yaccParser/hsparser.y"
-{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
+#line 683 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_dictcc(yyvsp[-4].ucoresyn,yyvsp[-3].uhstring,yyvsp[-2].uhstring,yyvsp[-1].ucoresyn,yyvsp[0].ucoresyn); ;
     break;}
 case 121:
-#line 683 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkcorec_pair(yyvsp[-2].ucoresyn, yyvsp[0].ucoresyn); ;
+#line 685 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_scc_noncaf(); ;
     break;}
 case 122:
-#line 687 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_preludedictscc(yyvsp[0].ucoresyn); ;
+#line 686 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_scc_caf(); ;
     break;}
 case 123:
 #line 688 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_alldictscc(yyvsp[-2].uhstring,yyvsp[-1].uhstring,yyvsp[0].ucoresyn); ;
+{ yyval.ucoresyn = mkco_scc_nondupd(); ;
     break;}
 case 124:
-#line 690 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_usercc(yyvsp[-4].uhstring,yyvsp[-3].uhstring,yyvsp[-2].uhstring,yyvsp[-1].ucoresyn,yyvsp[0].ucoresyn); ;
+#line 689 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_scc_dupd(); ;
     break;}
 case 125:
 #line 692 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_autocc(yyvsp[-4].ucoresyn,yyvsp[-3].uhstring,yyvsp[-2].uhstring,yyvsp[-1].ucoresyn,yyvsp[0].ucoresyn); ;
+{ yyval.ucoresyn = mkco_sdselid(yyvsp[-1].uid, yyvsp[0].uid); ;
     break;}
 case 126:
-#line 694 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_dictcc(yyvsp[-4].ucoresyn,yyvsp[-3].uhstring,yyvsp[-2].uhstring,yyvsp[-1].ucoresyn,yyvsp[0].ucoresyn); ;
+#line 693 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_classopid(yyvsp[-1].uid, yyvsp[0].uid); ;
     break;}
 case 127:
-#line 696 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_scc_noncaf(); ;
+#line 694 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_defmid(yyvsp[-1].uid, yyvsp[0].uid); ;
     break;}
 case 128:
-#line 697 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_scc_caf(); ;
+#line 696 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_dfunid(yyvsp[-3].uid, yyvsp[-1].uttype); ;
     break;}
 case 129:
-#line 699 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_scc_nondupd(); ;
+#line 698 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_constmid(yyvsp[-4].uid, yyvsp[-3].uid, yyvsp[-1].uttype); ;
     break;}
 case 130:
 #line 700 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_scc_dupd(); ;
+{ yyval.ucoresyn = mkco_specid(yyvsp[-3].ucoresyn, yyvsp[-1].ulist); ;
     break;}
 case 131:
-#line 703 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_sdselid(yyvsp[-1].uid, yyvsp[0].uid); ;
+#line 701 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_wrkrid(yyvsp[0].ucoresyn); ;
     break;}
 case 132:
-#line 704 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_classopid(yyvsp[-1].uid, yyvsp[0].uid); ;
+#line 702 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_orig_id(yyvsp[-1].uid, yyvsp[0].uid); ;
     break;}
 case 133:
-#line 705 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_defmid(yyvsp[-1].uid, yyvsp[0].uid); ;
+#line 703 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_orig_id(yyvsp[-1].uid, yyvsp[0].uid); ;
     break;}
 case 134:
-#line 707 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_dfunid(yyvsp[-3].uid, yyvsp[-1].uttype); ;
+#line 704 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_id(yyvsp[0].uid); ;
     break;}
 case 135:
-#line 709 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_constmid(yyvsp[-4].uid, yyvsp[-3].uid, yyvsp[-1].uttype); ;
+#line 705 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_id(yyvsp[0].uid); ;
     break;}
 case 136:
-#line 711 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_specid(yyvsp[-3].ucoresyn, yyvsp[-1].ulist); ;
+#line 710 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_ccall(yyvsp[-5].uid,0,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
     break;}
 case 137:
 #line 712 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_wrkrid(yyvsp[0].ucoresyn); ;
+{ yyval.ucoresyn = mkco_ccall(yyvsp[-5].uid,1,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
     break;}
 case 138:
-#line 713 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_orig_id(yyvsp[-1].uid, yyvsp[0].uid); ;
-    break;}
-case 139:
 #line 714 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_orig_id(yyvsp[-1].uid, yyvsp[0].uid); ;
-    break;}
-case 140:
-#line 715 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_id(yyvsp[0].uid); ;
-    break;}
-case 141:
-#line 716 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_id(yyvsp[0].uid); ;
-    break;}
-case 142:
-#line 721 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_ccall(yyvsp[-5].uid,0,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
-    break;}
-case 143:
-#line 723 "yaccParser/hsparser.y"
-{ yyval.ucoresyn = mkco_ccall(yyvsp[-5].uid,1,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
-    break;}
-case 144:
-#line 725 "yaccParser/hsparser.y"
 { yyval.ucoresyn = mkco_casm(yyvsp[-5].uliteral,0,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
     break;}
-case 145:
-#line 727 "yaccParser/hsparser.y"
+case 139:
+#line 716 "yaccParser/hsparser.y"
 { yyval.ucoresyn = mkco_casm(yyvsp[-5].uliteral,1,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
     break;}
-case 146:
-#line 728 "yaccParser/hsparser.y"
+case 140:
+#line 717 "yaccParser/hsparser.y"
 { yyval.ucoresyn = mkco_primop(yyvsp[0].uid); ;
     break;}
-case 147:
-#line 732 "yaccParser/hsparser.y"
+case 141:
+#line 721 "yaccParser/hsparser.y"
 { yyval.ulist = Lnil; ;
     break;}
-case 148:
-#line 733 "yaccParser/hsparser.y"
+case 142:
+#line 722 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
     break;}
-case 149:
-#line 737 "yaccParser/hsparser.y"
+case 143:
+#line 726 "yaccParser/hsparser.y"
 { yyval.ucoresyn = mkcobinder(yyvsp[-3].uid, yyvsp[-1].uttype); ;
     break;}
-case 150:
-#line 740 "yaccParser/hsparser.y"
+case 144:
+#line 729 "yaccParser/hsparser.y"
 { yyval.ulist = Lnil; ;
     break;}
-case 151:
-#line 741 "yaccParser/hsparser.y"
+case 145:
+#line 730 "yaccParser/hsparser.y"
 { yyval.ulist = yyvsp[-1].ulist; ;
     break;}
-case 152:
-#line 745 "yaccParser/hsparser.y"
+case 146:
+#line 734 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].ucoresyn); ;
     break;}
-case 153:
-#line 746 "yaccParser/hsparser.y"
+case 147:
+#line 735 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
     break;}
-case 154:
-#line 750 "yaccParser/hsparser.y"
+case 148:
+#line 739 "yaccParser/hsparser.y"
 { yyval.ucoresyn = mkcolit(yyvsp[0].uliteral); ;
     break;}
-case 155:
-#line 751 "yaccParser/hsparser.y"
+case 149:
+#line 740 "yaccParser/hsparser.y"
 { yyval.ucoresyn = mkcolocal(yyvsp[0].ucoresyn); ;
     break;}
-case 156:
-#line 755 "yaccParser/hsparser.y"
+case 150:
+#line 744 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uid); ;
     break;}
-case 157:
-#line 756 "yaccParser/hsparser.y"
+case 151:
+#line 745 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].uid); ;
     break;}
-case 158:
-#line 760 "yaccParser/hsparser.y"
+case 152:
+#line 749 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uid); ;
     break;}
-case 159:
-#line 761 "yaccParser/hsparser.y"
+case 153:
+#line 750 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uid); ;
     break;}
-case 160:
-#line 765 "yaccParser/hsparser.y"
+case 154:
+#line 754 "yaccParser/hsparser.y"
 { yyval.ulist = Lnil; ;
     break;}
-case 161:
-#line 766 "yaccParser/hsparser.y"
+case 155:
+#line 755 "yaccParser/hsparser.y"
 { yyval.ulist = yyvsp[-1].ulist; ;
     break;}
-case 162:
-#line 770 "yaccParser/hsparser.y"
+case 156:
+#line 759 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uttype); ;
     break;}
-case 163:
-#line 771 "yaccParser/hsparser.y"
+case 157:
+#line 760 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uttype); ;
     break;}
-case 164:
-#line 775 "yaccParser/hsparser.y"
+case 158:
+#line 764 "yaccParser/hsparser.y"
 { yyval.uttype = yyvsp[0].uttype; ;
     break;}
-case 165:
-#line 795 "yaccParser/hsparser.y"
+case 159:
+#line 784 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uttype); ;
     break;}
-case 166:
-#line 796 "yaccParser/hsparser.y"
+case 160:
+#line 785 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uttype); ;
     break;}
-case 167:
-#line 800 "yaccParser/hsparser.y"
+case 161:
+#line 789 "yaccParser/hsparser.y"
 { yyval.uttype = mkty_maybe_nothing(); ;
     break;}
-case 168:
-#line 801 "yaccParser/hsparser.y"
+case 162:
+#line 790 "yaccParser/hsparser.y"
 { yyval.uttype = mkty_maybe_just(yyvsp[0].uttype); ;
     break;}
-case 169:
-#line 807 "yaccParser/hsparser.y"
+case 163:
+#line 796 "yaccParser/hsparser.y"
 {
                  if ( implicitPrelude && !etags ) {
                     /* we try to avoid reading interfaces when etagging */
@@ -2796,16 +2781,16 @@ case 169:
                  enteriscope();
                ;
     break;}
-case 170:
-#line 821 "yaccParser/hsparser.y"
+case 164:
+#line 810 "yaccParser/hsparser.y"
 {
                  binding prelude_core = mkimport(installid(iface_name),Lnil,Lnil,yyvsp[0].ubinding,xstrdup(interface_filename),hsplineno);
                  prelude_core_import = implicitPrelude? lsing(prelude_core): Lnil;
                  
                ;
     break;}
-case 171:
-#line 829 "yaccParser/hsparser.y"
+case 165:
+#line 818 "yaccParser/hsparser.y"
 {
                  if ( implicitPrelude && !etags ) {
                     find_module_on_imports_dirlist(
@@ -2819,32 +2804,32 @@ case 171:
                  enteriscope();
                ;
     break;}
-case 172:
-#line 842 "yaccParser/hsparser.y"
+case 166:
+#line 831 "yaccParser/hsparser.y"
 {
                  binding prelude = mkimport(installid(iface_name),Lnil,Lnil,yyvsp[0].ubinding,xstrdup(interface_filename),hsplineno);
                  prelude_imports = (! implicitPrelude) ? Lnil
                                        : lconc(prelude_core_import,lsing(prelude));
                ;
     break;}
-case 173:
-#line 849 "yaccParser/hsparser.y"
+case 167:
+#line 838 "yaccParser/hsparser.y"
 { yyval.ulist = Lnil; ;
     break;}
-case 174:
-#line 850 "yaccParser/hsparser.y"
+case 168:
+#line 839 "yaccParser/hsparser.y"
 { yyval.ulist = yyvsp[-1].ulist; ;
     break;}
-case 175:
-#line 853 "yaccParser/hsparser.y"
+case 169:
+#line 842 "yaccParser/hsparser.y"
 { yyval.ulist = yyvsp[0].ulist; ;
     break;}
-case 176:
-#line 854 "yaccParser/hsparser.y"
+case 170:
+#line 843 "yaccParser/hsparser.y"
 { yyval.ulist = lconc(yyvsp[-2].ulist,yyvsp[0].ulist); ;
     break;}
-case 177:
-#line 858 "yaccParser/hsparser.y"
+case 171:
+#line 847 "yaccParser/hsparser.y"
 { /* filename returned in "interface_filename" */
                  char *module_name = id_to_string(yyvsp[0].uid);
                  if ( ! etags ) {
@@ -2866,81 +2851,81 @@ case 177:
                  }
                ;
     break;}
-case 178:
-#line 879 "yaccParser/hsparser.y"
+case 172:
+#line 868 "yaccParser/hsparser.y"
 {
                  if (hidden)
                    yyvsp[0].ubinding->tag = hiding;
                  yyval.ulist = lsing(yyvsp[0].ubinding);
                ;
     break;}
-case 179:
-#line 887 "yaccParser/hsparser.y"
+case 173:
+#line 876 "yaccParser/hsparser.y"
 { yyval.ubinding = mkimport(installid(iface_name),yyvsp[0].ulist,Lnil,yyvsp[-1].ubinding,xstrdup(interface_filename),hsplineno); ;
     break;}
-case 180:
-#line 890 "yaccParser/hsparser.y"
+case 174:
+#line 879 "yaccParser/hsparser.y"
 { yyval.ubinding = mkimport(installid(iface_name),yyvsp[-2].ulist,yyvsp[0].ulist,yyvsp[-3].ubinding,xstrdup(interface_filename),hsplineno); ;
     break;}
-case 181:
-#line 895 "yaccParser/hsparser.y"
+case 175:
+#line 884 "yaccParser/hsparser.y"
 {
                  exposeis(); /* partain: expose infix ops at level i+1 to level i */
                  yyval.ubinding = yyvsp[-1].ubinding;
                ;
     break;}
-case 182:
-#line 901 "yaccParser/hsparser.y"
+case 176:
+#line 890 "yaccParser/hsparser.y"
 { yyval.ulist = yyvsp[-1].ulist; ;
     break;}
-case 183:
-#line 905 "yaccParser/hsparser.y"
+case 177:
+#line 894 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].ulist); ;
     break;}
-case 184:
-#line 906 "yaccParser/hsparser.y"
+case 178:
+#line 895 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].ulist); ;
     break;}
-case 185:
-#line 909 "yaccParser/hsparser.y"
+case 179:
+#line 898 "yaccParser/hsparser.y"
 { yyval.ulist = ldub(yyvsp[-2].uid,yyvsp[0].uid); ;
     break;}
-case 186:
-#line 910 "yaccParser/hsparser.y"
+case 180:
+#line 899 "yaccParser/hsparser.y"
 { yyval.ulist = ldub(yyvsp[-2].uid,yyvsp[0].uid); ;
     break;}
-case 187:
-#line 913 "yaccParser/hsparser.y"
+case 181:
+#line 902 "yaccParser/hsparser.y"
 { yyval.ubinding = mknullbind(); ;
     break;}
-case 188:
-#line 914 "yaccParser/hsparser.y"
+case 182:
+#line 903 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[-1].ubinding; ;
     break;}
-case 189:
-#line 917 "yaccParser/hsparser.y"
+case 183:
+#line 906 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
-case 190:
-#line 918 "yaccParser/hsparser.y"
+case 184:
+#line 907 "yaccParser/hsparser.y"
 { yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding); ;
     break;}
-case 191:
-#line 922 "yaccParser/hsparser.y"
+case 185:
+#line 911 "yaccParser/hsparser.y"
 { yyval.ubinding = mkmbind(yyvsp[-3].uid,yyvsp[-1].ulist,Lnil,startlineno); ;
     break;}
-case 192:
-#line 924 "yaccParser/hsparser.y"
+case 186:
+#line 913 "yaccParser/hsparser.y"
 { yyval.ubinding = mkmbind(yyvsp[-5].uid,yyvsp[-3].ulist,yyvsp[0].ulist,startlineno); ;
     break;}
-case 193:
-#line 930 "yaccParser/hsparser.y"
+case 187:
+#line 919 "yaccParser/hsparser.y"
 { /* OLD 95/08: fixlist = Lnil; */
                  strcpy(iface_name, id_to_string(yyvsp[0].uid));
                ;
     break;}
-case 194:
-#line 934 "yaccParser/hsparser.y"
+case 188:
+#line 923 "yaccParser/hsparser.y"
 {
                /* WDP: not only do we not check the module name
                   but we take the one in the interface to be what we really want
@@ -2951,64 +2936,64 @@ case 194:
                  yyval.ubinding = yyvsp[0].ubinding;
                ;
     break;}
-case 195:
-#line 947 "yaccParser/hsparser.y"
+case 189:
+#line 936 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = mkabind(yyvsp[-3].ubinding,yyvsp[-1].ubinding);
                ;
     break;}
-case 196:
-#line 951 "yaccParser/hsparser.y"
+case 190:
+#line 940 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = yyvsp[-1].ubinding;
                ;
     break;}
-case 197:
-#line 955 "yaccParser/hsparser.y"
+case 191:
+#line 944 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = mkabind(yyvsp[-3].ubinding,yyvsp[-1].ubinding);
                ;
     break;}
-case 198:
-#line 959 "yaccParser/hsparser.y"
+case 192:
+#line 948 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = yyvsp[-1].ubinding;
                ;
     break;}
-case 203:
-#line 974 "yaccParser/hsparser.y"
+case 197:
+#line 963 "yaccParser/hsparser.y"
 { Precedence = checkfixity(yyvsp[0].ustring); Fixity = INFIXL; ;
     break;}
-case 205:
-#line 977 "yaccParser/hsparser.y"
+case 199:
+#line 966 "yaccParser/hsparser.y"
 { Precedence = checkfixity(yyvsp[0].ustring); Fixity = INFIXR; ;
     break;}
-case 207:
-#line 980 "yaccParser/hsparser.y"
+case 201:
+#line 969 "yaccParser/hsparser.y"
 { Precedence = checkfixity(yyvsp[0].ustring); Fixity = INFIX; ;
     break;}
-case 209:
-#line 983 "yaccParser/hsparser.y"
+case 203:
+#line 972 "yaccParser/hsparser.y"
 { Fixity = INFIXL; Precedence = 9; ;
     break;}
-case 211:
-#line 986 "yaccParser/hsparser.y"
+case 205:
+#line 975 "yaccParser/hsparser.y"
 { Fixity = INFIXR; Precedence = 9; ;
     break;}
-case 213:
-#line 989 "yaccParser/hsparser.y"
+case 207:
+#line 978 "yaccParser/hsparser.y"
 { Fixity = INFIX; Precedence = 9; ;
     break;}
-case 215:
-#line 993 "yaccParser/hsparser.y"
+case 209:
+#line 982 "yaccParser/hsparser.y"
 { makeinfix(id_to_string(yyvsp[0].uid),Fixity,Precedence); ;
     break;}
-case 216:
-#line 994 "yaccParser/hsparser.y"
+case 210:
+#line 983 "yaccParser/hsparser.y"
 { makeinfix(id_to_string(yyvsp[0].uid),Fixity,Precedence); ;
     break;}
-case 218:
-#line 999 "yaccParser/hsparser.y"
+case 212:
+#line 988 "yaccParser/hsparser.y"
 {
                  if(yyvsp[-2].ubinding != NULL)
                    if(yyvsp[0].ubinding != NULL)
@@ -3026,128 +3011,152 @@ case 218:
                  SAMEFN = 0;
                ;
     break;}
-case 219:
-#line 1017 "yaccParser/hsparser.y"
+case 213:
+#line 1006 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
-case 220:
-#line 1018 "yaccParser/hsparser.y"
+case 214:
+#line 1007 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
-case 221:
-#line 1019 "yaccParser/hsparser.y"
+case 215:
+#line 1008 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
-case 222:
-#line 1020 "yaccParser/hsparser.y"
+case 216:
+#line 1009 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
-case 223:
-#line 1021 "yaccParser/hsparser.y"
+case 217:
+#line 1010 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
-case 224:
-#line 1022 "yaccParser/hsparser.y"
+case 218:
+#line 1011 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
-case 225:
-#line 1025 "yaccParser/hsparser.y"
+case 219:
+#line 1014 "yaccParser/hsparser.y"
 { yyval.ubinding = mknbind(yyvsp[-2].uttype,yyvsp[0].uttype,startlineno,mkno_pragma()); ;
     break;}
-case 226:
-#line 1030 "yaccParser/hsparser.y"
+case 220:
+#line 1019 "yaccParser/hsparser.y"
 { yyval.ubinding = mktbind(yyvsp[-4].ulist,yyvsp[-2].uttype,yyvsp[0].ulist,all,startlineno,mkno_pragma()); ;
     break;}
-case 227:
-#line 1032 "yaccParser/hsparser.y"
+case 221:
+#line 1021 "yaccParser/hsparser.y"
 { yyval.ubinding = mktbind(Lnil,yyvsp[-2].uttype,yyvsp[0].ulist,all,startlineno,mkno_pragma()); ;
     break;}
+case 222:
+#line 1023 "yaccParser/hsparser.y"
+{ yyval.ubinding = mktbind(yyvsp[-6].ulist,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
+    break;}
+case 223:
+#line 1025 "yaccParser/hsparser.y"
+{ yyval.ubinding = mktbind(Lnil,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
+    break;}
+case 224:
+#line 1028 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkcbind(yyvsp[-3].ulist,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
+    break;}
+case 225:
+#line 1029 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkcbind(Lnil,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
+    break;}
+case 226:
+#line 1032 "yaccParser/hsparser.y"
+{ yyval.ubinding = mknullbind(); ;
+    break;}
+case 227:
+#line 1033 "yaccParser/hsparser.y"
+{ checkorder(yyvsp[-1].ubinding); yyval.ubinding = yyvsp[-1].ubinding; ;
+    break;}
 case 228:
 #line 1034 "yaccParser/hsparser.y"
-{ yyval.ubinding = mktbind(yyvsp[-6].ulist,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
+{ checkorder(yyvsp[-1].ubinding); yyval.ubinding =yyvsp[-1].ubinding; ;
     break;}
 case 229:
-#line 1036 "yaccParser/hsparser.y"
-{ yyval.ubinding = mktbind(Lnil,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
+#line 1037 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkibind(yyvsp[-4].ulist,yyvsp[-2].uid,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
     break;}
 case 230:
-#line 1039 "yaccParser/hsparser.y"
-{ yyval.ubinding = mkcbind(yyvsp[-3].ulist,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
+#line 1038 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkibind(Lnil,yyvsp[-2].uid,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
     break;}
 case 231:
-#line 1040 "yaccParser/hsparser.y"
-{ yyval.ubinding = mkcbind(Lnil,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
+#line 1041 "yaccParser/hsparser.y"
+{ yyval.ubinding = mknullbind(); ;
     break;}
 case 232:
-#line 1043 "yaccParser/hsparser.y"
-{ yyval.ubinding = mknullbind(); ;
+#line 1042 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[-1].ubinding; ;
     break;}
 case 233:
-#line 1044 "yaccParser/hsparser.y"
-{ checkorder(yyvsp[-1].ubinding); yyval.ubinding = yyvsp[-1].ubinding; ;
+#line 1043 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[-1].ubinding; ;
     break;}
 case 234:
-#line 1045 "yaccParser/hsparser.y"
-{ checkorder(yyvsp[-1].ubinding); yyval.ubinding =yyvsp[-1].ubinding; ;
+#line 1046 "yaccParser/hsparser.y"
+{ yyval.uttype = mktname(yyvsp[0].uid,Lnil); ;
     break;}
 case 235:
-#line 1048 "yaccParser/hsparser.y"
-{ yyval.ubinding = mkibind(yyvsp[-4].ulist,yyvsp[-2].uid,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
+#line 1047 "yaccParser/hsparser.y"
+{ yyval.uttype = mktname(yyvsp[-2].uid,yyvsp[-1].ulist); ;
     break;}
 case 236:
-#line 1049 "yaccParser/hsparser.y"
-{ yyval.ubinding = mkibind(Lnil,yyvsp[-2].uid,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
+#line 1048 "yaccParser/hsparser.y"
+{ yyval.uttype = mkttuple(mklcons(yyvsp[-3].uttype,yyvsp[-1].ulist)); ;
     break;}
 case 237:
-#line 1052 "yaccParser/hsparser.y"
-{ yyval.ubinding = mknullbind(); ;
+#line 1049 "yaccParser/hsparser.y"
+{ yyval.uttype = mkttuple(Lnil); ;
     break;}
 case 238:
-#line 1053 "yaccParser/hsparser.y"
-{ yyval.ubinding = yyvsp[-1].ubinding; ;
+#line 1050 "yaccParser/hsparser.y"
+{ yyval.uttype = mktllist(yyvsp[-1].uttype); ;
     break;}
 case 239:
-#line 1054 "yaccParser/hsparser.y"
-{ yyval.ubinding = yyvsp[-1].ubinding; ;
+#line 1051 "yaccParser/hsparser.y"
+{ yyval.uttype = mktfun(yyvsp[-3].uttype,yyvsp[-1].uttype); ;
     break;}
 case 240:
-#line 1057 "yaccParser/hsparser.y"
+#line 1054 "yaccParser/hsparser.y"
 { yyval.uttype = mktname(yyvsp[0].uid,Lnil); ;
     break;}
 case 241:
-#line 1058 "yaccParser/hsparser.y"
-{ yyval.uttype = yyvsp[-1].uttype; ;
+#line 1055 "yaccParser/hsparser.y"
+{ yyval.uttype = mktname(yyvsp[-2].uid,yyvsp[-1].ulist); ;
     break;}
 case 242:
-#line 1060 "yaccParser/hsparser.y"
-{ yyval.uttype = mkttuple(yyvsp[-1].ulist); ;
+#line 1056 "yaccParser/hsparser.y"
+{ yyval.uttype = mkttuple(mklcons(yyvsp[-3].uttype,yyvsp[-1].ulist)); ;
     break;}
 case 243:
-#line 1061 "yaccParser/hsparser.y"
+#line 1057 "yaccParser/hsparser.y"
 { yyval.uttype = mkttuple(Lnil); ;
     break;}
 case 244:
-#line 1062 "yaccParser/hsparser.y"
+#line 1058 "yaccParser/hsparser.y"
 { yyval.uttype = mktllist(yyvsp[-1].uttype); ;
     break;}
 case 245:
-#line 1063 "yaccParser/hsparser.y"
+#line 1059 "yaccParser/hsparser.y"
 { yyval.uttype = mktfun(yyvsp[-3].uttype,yyvsp[-1].uttype); ;
     break;}
 case 246:
-#line 1066 "yaccParser/hsparser.y"
+#line 1062 "yaccParser/hsparser.y"
 { yyval.ubinding = mkdbind(yyvsp[0].ulist,startlineno); ;
     break;}
 case 247:
-#line 1069 "yaccParser/hsparser.y"
+#line 1065 "yaccParser/hsparser.y"
 { yyval.ulist = mklcons(yyvsp[-3].uttype,yyvsp[-1].ulist); ;
     break;}
 case 248:
-#line 1070 "yaccParser/hsparser.y"
+#line 1066 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uttype); ;
     break;}
 case 250:
-#line 1079 "yaccParser/hsparser.y"
+#line 1075 "yaccParser/hsparser.y"
 {
                  if(SAMEFN)
                    {
@@ -3159,350 +3168,346 @@ case 250:
                ;
     break;}
 case 251:
-#line 1108 "yaccParser/hsparser.y"
+#line 1104 "yaccParser/hsparser.y"
 { /* type2context.c for code */
                  yyval.ubinding = mksbind(yyvsp[-5].ulist,mkcontext(type2context(yyvsp[-3].uttype),yyvsp[-1].uttype),startlineno,yyvsp[0].uhpragma);
                  PREVPATT = NULL; FN = NULL; SAMEFN = 0;
                ;
     break;}
 case 252:
-#line 1113 "yaccParser/hsparser.y"
+#line 1109 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = mksbind(yyvsp[-3].ulist,yyvsp[-1].uttype,startlineno,yyvsp[0].uhpragma);
                  PREVPATT = NULL; FN = NULL; SAMEFN = 0;
                ;
     break;}
 case 253:
-#line 1126 "yaccParser/hsparser.y"
+#line 1122 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = mkvspec_uprag(yyvsp[-3].uid, yyvsp[-1].ulist, startlineno);
                  PREVPATT = NULL; FN = NULL; SAMEFN = 0;
                ;
     break;}
 case 254:
-#line 1132 "yaccParser/hsparser.y"
+#line 1128 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = mkispec_uprag(yyvsp[-2].uid, yyvsp[-1].uttype, startlineno);
                  PREVPATT = NULL; FN = NULL; SAMEFN = 0;
                ;
     break;}
 case 255:
-#line 1138 "yaccParser/hsparser.y"
+#line 1134 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = mkdspec_uprag(yyvsp[-2].uid, yyvsp[-1].ulist, startlineno);
                  PREVPATT = NULL; FN = NULL; SAMEFN = 0;
                ;
     break;}
 case 256:
-#line 1144 "yaccParser/hsparser.y"
+#line 1140 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = mkinline_uprag(yyvsp[-2].uid, yyvsp[-1].ulist, startlineno);
                  PREVPATT = NULL; FN = NULL; SAMEFN = 0;
                ;
     break;}
 case 257:
-#line 1150 "yaccParser/hsparser.y"
+#line 1146 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = mkmagicuf_uprag(yyvsp[-2].uid, yyvsp[-1].uid, startlineno);
                  PREVPATT = NULL; FN = NULL; SAMEFN = 0;
                ;
     break;}
 case 258:
-#line 1156 "yaccParser/hsparser.y"
+#line 1152 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = mkdeforest_uprag(yyvsp[-1].uid, startlineno);
                  PREVPATT = NULL; FN = NULL; SAMEFN = 0;
                ;
     break;}
 case 259:
-#line 1162 "yaccParser/hsparser.y"
+#line 1158 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = mkabstract_uprag(yyvsp[-1].uid, startlineno);
                  PREVPATT = NULL; FN = NULL; SAMEFN = 0;
                ;
     break;}
 case 261:
-#line 1170 "yaccParser/hsparser.y"
+#line 1166 "yaccParser/hsparser.y"
 { yyval.ubinding = mknullbind(); PREVPATT = NULL; FN = NULL; SAMEFN = 0; ;
     break;}
 case 262:
-#line 1174 "yaccParser/hsparser.y"
+#line 1170 "yaccParser/hsparser.y"
 { yyval.ulist = Lnil; ;
     break;}
 case 263:
-#line 1175 "yaccParser/hsparser.y"
+#line 1171 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uid); ;
     break;}
 case 264:
-#line 1178 "yaccParser/hsparser.y"
+#line 1174 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].ubinding); ;
     break;}
 case 265:
-#line 1179 "yaccParser/hsparser.y"
+#line 1175 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].ubinding); ;
     break;}
 case 266:
-#line 1183 "yaccParser/hsparser.y"
+#line 1179 "yaccParser/hsparser.y"
 { yyval.ubinding = mkvspec_ty_and_id(yyvsp[0].uttype,Lnil); ;
     break;}
 case 267:
-#line 1184 "yaccParser/hsparser.y"
+#line 1180 "yaccParser/hsparser.y"
 { yyval.ubinding = mkvspec_ty_and_id(yyvsp[-2].uttype,lsing(yyvsp[0].uid)); ;
     break;}
 case 268:
-#line 1186 "yaccParser/hsparser.y"
+#line 1182 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
 case 269:
-#line 1187 "yaccParser/hsparser.y"
+#line 1183 "yaccParser/hsparser.y"
 { yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding); ;
     break;}
 case 270:
-#line 1190 "yaccParser/hsparser.y"
+#line 1186 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
 case 271:
-#line 1191 "yaccParser/hsparser.y"
+#line 1187 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
 case 272:
-#line 1192 "yaccParser/hsparser.y"
+#line 1188 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
 case 273:
-#line 1193 "yaccParser/hsparser.y"
+#line 1189 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
 case 274:
-#line 1194 "yaccParser/hsparser.y"
+#line 1190 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
 case 275:
-#line 1195 "yaccParser/hsparser.y"
+#line 1191 "yaccParser/hsparser.y"
 { yyval.ubinding = mknullbind(); ;
     break;}
 case 276:
-#line 1200 "yaccParser/hsparser.y"
+#line 1196 "yaccParser/hsparser.y"
 { yyval.ubinding = mksbind(yyvsp[-5].ulist,mkcontext(type2context(yyvsp[-3].uttype),yyvsp[-1].uttype),startlineno,yyvsp[0].uhpragma); ;
     break;}
 case 277:
-#line 1202 "yaccParser/hsparser.y"
+#line 1198 "yaccParser/hsparser.y"
 { yyval.ubinding = mksbind(yyvsp[-3].ulist,yyvsp[-1].uttype,startlineno,yyvsp[0].uhpragma); ;
     break;}
 case 278:
-#line 1206 "yaccParser/hsparser.y"
+#line 1202 "yaccParser/hsparser.y"
 { yyval.ubinding = mknbind(yyvsp[-3].uttype,yyvsp[-1].uttype,startlineno,yyvsp[0].uhpragma); ;
     break;}
 case 279:
-#line 1210 "yaccParser/hsparser.y"
+#line 1206 "yaccParser/hsparser.y"
 { yyval.ubinding = mktbind(yyvsp[-3].ulist,yyvsp[-1].uttype,Lnil,Lnil,startlineno,yyvsp[0].uhpragma); ;
     break;}
 case 280:
-#line 1212 "yaccParser/hsparser.y"
+#line 1208 "yaccParser/hsparser.y"
 { yyval.ubinding = mktbind(Lnil,yyvsp[-1].uttype,Lnil,Lnil,startlineno,yyvsp[0].uhpragma); ;
     break;}
 case 281:
-#line 1214 "yaccParser/hsparser.y"
+#line 1210 "yaccParser/hsparser.y"
 { yyval.ubinding = mktbind(yyvsp[-5].ulist,yyvsp[-3].uttype,yyvsp[-1].ulist,Lnil,startlineno,yyvsp[0].uhpragma); ;
     break;}
 case 282:
-#line 1216 "yaccParser/hsparser.y"
+#line 1212 "yaccParser/hsparser.y"
 { yyval.ubinding = mktbind(Lnil,yyvsp[-3].uttype,yyvsp[-1].ulist,Lnil,startlineno,yyvsp[0].uhpragma); ;
     break;}
 case 283:
-#line 1218 "yaccParser/hsparser.y"
+#line 1214 "yaccParser/hsparser.y"
 { yyval.ubinding = mktbind(yyvsp[-6].ulist,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
     break;}
 case 284:
-#line 1220 "yaccParser/hsparser.y"
+#line 1216 "yaccParser/hsparser.y"
 { yyval.ubinding = mktbind(Lnil,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
     break;}
 case 285:
-#line 1224 "yaccParser/hsparser.y"
+#line 1220 "yaccParser/hsparser.y"
 { yyval.ubinding = mkcbind(yyvsp[-4].ulist,yyvsp[-2].uttype,yyvsp[0].ubinding,startlineno,yyvsp[-1].uhpragma); ;
     break;}
 case 286:
-#line 1226 "yaccParser/hsparser.y"
+#line 1222 "yaccParser/hsparser.y"
 { yyval.ubinding = mkcbind(Lnil,yyvsp[-2].uttype,yyvsp[0].ubinding,startlineno,yyvsp[-1].uhpragma); ;
     break;}
 case 287:
-#line 1230 "yaccParser/hsparser.y"
+#line 1226 "yaccParser/hsparser.y"
 { yyval.ubinding = mkibind(yyvsp[-4].ulist,yyvsp[-2].uid,yyvsp[-1].uttype,mknullbind(),startlineno,yyvsp[0].uhpragma); ;
     break;}
 case 288:
-#line 1232 "yaccParser/hsparser.y"
+#line 1228 "yaccParser/hsparser.y"
 { yyval.ubinding = mkibind(Lnil,yyvsp[-2].uid,yyvsp[-1].uttype,mknullbind(),startlineno,yyvsp[0].uhpragma); ;
     break;}
 case 289:
-#line 1238 "yaccParser/hsparser.y"
+#line 1234 "yaccParser/hsparser.y"
 { yyval.uttype = mktname(yyvsp[-1].uid,lsing(yyvsp[0].uttype)); ;
     break;}
 case 290:
-#line 1242 "yaccParser/hsparser.y"
+#line 1238 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uttype); ;
     break;}
 case 291:
-#line 1243 "yaccParser/hsparser.y"
+#line 1239 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uttype); ;
     break;}
 case 292:
-#line 1246 "yaccParser/hsparser.y"
+#line 1242 "yaccParser/hsparser.y"
 { yyval.uttype = yyvsp[0].uttype; ;
     break;}
 case 293:
-#line 1247 "yaccParser/hsparser.y"
+#line 1243 "yaccParser/hsparser.y"
 { yyval.uttype = mktfun(yyvsp[-2].uttype,yyvsp[0].uttype); ;
     break;}
 case 294:
-#line 1250 "yaccParser/hsparser.y"
+#line 1246 "yaccParser/hsparser.y"
 { yyval.uttype = mkuniforall(yyvsp[-2].ulist, yyvsp[0].uttype); ;
     break;}
 case 295:
-#line 1252 "yaccParser/hsparser.y"
+#line 1248 "yaccParser/hsparser.y"
 { yyval.uttype = yyvsp[0].uttype; ;
     break;}
 case 296:
-#line 1253 "yaccParser/hsparser.y"
+#line 1249 "yaccParser/hsparser.y"
 { yyval.uttype = mktname(yyvsp[-1].uid,yyvsp[0].ulist); ;
     break;}
 case 297:
-#line 1256 "yaccParser/hsparser.y"
+#line 1252 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-1].ulist,yyvsp[0].uttype); ;
     break;}
 case 298:
-#line 1257 "yaccParser/hsparser.y"
+#line 1253 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uttype); ;
     break;}
 case 299:
-#line 1261 "yaccParser/hsparser.y"
+#line 1257 "yaccParser/hsparser.y"
 { yyval.uttype = yyvsp[0].uttype; ;
     break;}
 case 300:
-#line 1262 "yaccParser/hsparser.y"
+#line 1258 "yaccParser/hsparser.y"
 { yyval.uttype = mktfun(yyvsp[-2].uttype,yyvsp[0].uttype); ;
     break;}
 case 301:
-#line 1263 "yaccParser/hsparser.y"
+#line 1259 "yaccParser/hsparser.y"
 { yyval.uttype = mktname(yyvsp[-1].uid,yyvsp[0].ulist); ;
     break;}
 case 303:
-#line 1267 "yaccParser/hsparser.y"
+#line 1263 "yaccParser/hsparser.y"
 { yyval.uttype = mkttuple(mklcons(yyvsp[-3].uttype,yyvsp[-1].ulist)); ;
     break;}
 case 304:
-#line 1270 "yaccParser/hsparser.y"
+#line 1266 "yaccParser/hsparser.y"
 { yyval.uttype = yyvsp[0].uttype; ;
     break;}
 case 305:
-#line 1271 "yaccParser/hsparser.y"
+#line 1267 "yaccParser/hsparser.y"
 { yyval.uttype = mktname(yyvsp[0].uid,Lnil); ;
     break;}
 case 306:
-#line 1272 "yaccParser/hsparser.y"
+#line 1268 "yaccParser/hsparser.y"
 { yyval.uttype = mkttuple(Lnil); ;
     break;}
 case 307:
-#line 1273 "yaccParser/hsparser.y"
+#line 1269 "yaccParser/hsparser.y"
 { yyval.uttype = yyvsp[-1].uttype; ;
     break;}
 case 308:
-#line 1274 "yaccParser/hsparser.y"
+#line 1270 "yaccParser/hsparser.y"
 { yyval.uttype = mktllist(yyvsp[-1].uttype); ;
     break;}
 case 309:
-#line 1277 "yaccParser/hsparser.y"
+#line 1273 "yaccParser/hsparser.y"
 { yyval.uttype = mkunidict(yyvsp[-3].uid, yyvsp[-2].uttype); ;
     break;}
 case 310:
-#line 1278 "yaccParser/hsparser.y"
+#line 1274 "yaccParser/hsparser.y"
 { yyval.uttype = mkunityvartemplate(yyvsp[0].uid); ;
     break;}
 case 311:
-#line 1282 "yaccParser/hsparser.y"
+#line 1278 "yaccParser/hsparser.y"
 { yyval.uttype = mktname(yyvsp[0].uid,Lnil); ;
     break;}
 case 312:
-#line 1283 "yaccParser/hsparser.y"
+#line 1279 "yaccParser/hsparser.y"
 { yyval.uttype = mktname(yyvsp[-1].uid,yyvsp[0].ulist); ;
     break;}
 case 313:
-#line 1287 "yaccParser/hsparser.y"
-{ yyval.uttype = mktname(yyvsp[-1].uid,yyvsp[0].ulist); ;
+#line 1282 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uatype); ;
     break;}
 case 314:
-#line 1293 "yaccParser/hsparser.y"
-{ yyval.ulist = lsing(yyvsp[0].uatype); ;
+#line 1283 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uatype); ;
     break;}
 case 315:
-#line 1294 "yaccParser/hsparser.y"
-{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uatype); ;
+#line 1287 "yaccParser/hsparser.y"
+{ yyval.uatype = mkatc(yyvsp[-1].uid,yyvsp[0].ulist,hsplineno); ;
     break;}
 case 316:
-#line 1298 "yaccParser/hsparser.y"
-{ yyval.uatype = mkatc(yyvsp[-1].uid,yyvsp[0].ulist,hsplineno); ;
+#line 1288 "yaccParser/hsparser.y"
+{ yyval.uatype = mkatc(yyvsp[-2].uid,yyvsp[0].ulist,hsplineno); ;
     break;}
 case 317:
-#line 1299 "yaccParser/hsparser.y"
-{ yyval.uatype = mkatc(yyvsp[-2].uid,yyvsp[0].ulist,hsplineno); ;
+#line 1289 "yaccParser/hsparser.y"
+{ yyval.uatype = mkatc(yyvsp[0].uid,Lnil,hsplineno); ;
     break;}
 case 318:
-#line 1300 "yaccParser/hsparser.y"
-{ yyval.uatype = mkatc(yyvsp[0].uid,Lnil,hsplineno); ;
+#line 1290 "yaccParser/hsparser.y"
+{ yyval.uatype = mkatc(yyvsp[-1].uid,Lnil,hsplineno); ;
     break;}
 case 319:
-#line 1301 "yaccParser/hsparser.y"
-{ yyval.uatype = mkatc(yyvsp[-1].uid,Lnil,hsplineno); ;
+#line 1291 "yaccParser/hsparser.y"
+{ yyval.uatype = mkatc(yyvsp[-1].uid, ldub(yyvsp[-2].uttype,yyvsp[0].uttype),hsplineno); ;
     break;}
 case 320:
-#line 1302 "yaccParser/hsparser.y"
-{ yyval.uatype = mkatc(yyvsp[-1].uid, ldub(yyvsp[-2].uttype,yyvsp[0].uttype),hsplineno); ;
+#line 1294 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[-1].ulist; ;
     break;}
 case 321:
-#line 1305 "yaccParser/hsparser.y"
-{ yyval.ulist = yyvsp[-1].ulist; ;
+#line 1295 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
     break;}
 case 322:
-#line 1306 "yaccParser/hsparser.y"
-{ yyval.ulist = Lnil; ;
+#line 1296 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uid); ;
     break;}
 case 323:
-#line 1307 "yaccParser/hsparser.y"
+#line 1299 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uid); ;
     break;}
 case 324:
-#line 1310 "yaccParser/hsparser.y"
-{ yyval.ulist = lsing(yyvsp[0].uid); ;
+#line 1300 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uid); ;
     break;}
 case 325:
-#line 1311 "yaccParser/hsparser.y"
-{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uid); ;
+#line 1303 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[-1].ulist; ;
     break;}
 case 326:
-#line 1314 "yaccParser/hsparser.y"
-{ yyval.ulist = yyvsp[-1].ulist; ;
+#line 1304 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uttype); ;
     break;}
 case 327:
-#line 1315 "yaccParser/hsparser.y"
+#line 1307 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uttype); ;
     break;}
 case 328:
-#line 1318 "yaccParser/hsparser.y"
-{ yyval.ulist = lsing(yyvsp[0].uttype); ;
-    break;}
-case 329:
-#line 1319 "yaccParser/hsparser.y"
+#line 1308 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uttype); ;
     break;}
-case 330:
-#line 1322 "yaccParser/hsparser.y"
+case 329:
+#line 1311 "yaccParser/hsparser.y"
 { yyval.ubinding = mknullbind(); ;
     break;}
-case 331:
-#line 1323 "yaccParser/hsparser.y"
+case 330:
+#line 1312 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[0].ubinding; ;
     break;}
-case 332:
-#line 1325 "yaccParser/hsparser.y"
+case 331:
+#line 1314 "yaccParser/hsparser.y"
 {
                  if(SAMEFN)
                    {
@@ -3513,46 +3518,53 @@ case 332:
                    yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding);
                ;
     break;}
+case 332:
+#line 1328 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mkvspec_uprag(yyvsp[-3].uid, yyvsp[-1].ulist, startlineno);
+                 PREVPATT = NULL; FN = NULL; SAMEFN = 0;
+               ;
+    break;}
 case 333:
-#line 1339 "yaccParser/hsparser.y"
+#line 1334 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = mkinline_uprag(yyvsp[-2].uid, yyvsp[-1].ulist, startlineno);
                  PREVPATT = NULL; FN = NULL; SAMEFN = 0;
                ;
     break;}
 case 334:
-#line 1345 "yaccParser/hsparser.y"
+#line 1340 "yaccParser/hsparser.y"
 {
                  yyval.ubinding = mkmagicuf_uprag(yyvsp[-2].uid, yyvsp[-1].uid, startlineno);
                  PREVPATT = NULL; FN = NULL; SAMEFN = 0;
                ;
     break;}
 case 336:
-#line 1354 "yaccParser/hsparser.y"
+#line 1349 "yaccParser/hsparser.y"
 { yyval.ulist = mklcons(yyvsp[-2].uid,yyvsp[0].ulist); ;
     break;}
 case 337:
-#line 1355 "yaccParser/hsparser.y"
+#line 1350 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uid); ;
     break;}
 case 338:
-#line 1359 "yaccParser/hsparser.y"
+#line 1353 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uid); ;
     break;}
 case 339:
-#line 1360 "yaccParser/hsparser.y"
+#line 1354 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uid); ;
     break;}
 case 340:
-#line 1363 "yaccParser/hsparser.y"
+#line 1357 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uid); ;
     break;}
 case 341:
-#line 1364 "yaccParser/hsparser.y"
+#line 1358 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uid); ;
     break;}
 case 342:
-#line 1369 "yaccParser/hsparser.y"
+#line 1363 "yaccParser/hsparser.y"
 {
                  tree fn = function(yyvsp[0].utree);
 
@@ -3579,7 +3591,7 @@ case 342:
                ;
     break;}
 case 343:
-#line 1394 "yaccParser/hsparser.y"
+#line 1388 "yaccParser/hsparser.y"
 {
                  if ( lhs_is_patt(yyvsp[-2].utree) )
                    {
@@ -3594,63 +3606,63 @@ case 343:
                ;
     break;}
 case 344:
-#line 1408 "yaccParser/hsparser.y"
+#line 1402 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(createpat(yyvsp[-1].ulist, yyvsp[0].ubinding)); ;
     break;}
 case 346:
-#line 1412 "yaccParser/hsparser.y"
+#line 1406 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(mktruecase(yyvsp[0].utree)); ;
     break;}
 case 347:
-#line 1415 "yaccParser/hsparser.y"
+#line 1409 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(ldub(yyvsp[-2].utree,yyvsp[0].utree)); ;
     break;}
 case 348:
-#line 1416 "yaccParser/hsparser.y"
+#line 1410 "yaccParser/hsparser.y"
 { yyval.ulist = mklcons(ldub(yyvsp[-3].utree,yyvsp[-1].utree),yyvsp[0].ulist); ;
     break;}
 case 349:
-#line 1420 "yaccParser/hsparser.y"
+#line 1414 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[-1].ubinding; ;
     break;}
 case 350:
-#line 1421 "yaccParser/hsparser.y"
+#line 1415 "yaccParser/hsparser.y"
 { yyval.ubinding = yyvsp[-1].ubinding; ;
     break;}
 case 351:
-#line 1422 "yaccParser/hsparser.y"
+#line 1416 "yaccParser/hsparser.y"
 { yyval.ubinding = mknullbind(); ;
     break;}
 case 352:
-#line 1425 "yaccParser/hsparser.y"
+#line 1419 "yaccParser/hsparser.y"
 { yyval.utree = yyvsp[0].utree; ;
     break;}
 case 353:
-#line 1429 "yaccParser/hsparser.y"
+#line 1423 "yaccParser/hsparser.y"
 { yyval.ulist = mklcons(yyvsp[-1].utree,yyvsp[0].ulist); ;
     break;}
 case 354:
-#line 1430 "yaccParser/hsparser.y"
+#line 1424 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].utree); ;
     break;}
 case 355:
-#line 1439 "yaccParser/hsparser.y"
+#line 1434 "yaccParser/hsparser.y"
 { yyval.utree = mkrestr(yyvsp[-4].utree,mkcontext(type2context(yyvsp[-2].uttype),yyvsp[0].uttype)); ;
     break;}
 case 356:
-#line 1440 "yaccParser/hsparser.y"
+#line 1435 "yaccParser/hsparser.y"
 { yyval.utree = mkrestr(yyvsp[-2].utree,yyvsp[0].uttype); ;
     break;}
 case 359:
-#line 1452 "yaccParser/hsparser.y"
+#line 1447 "yaccParser/hsparser.y"
 { yyval.utree = mkinfixop(yyvsp[-1].uid,yyvsp[-2].utree,yyvsp[0].utree); precparse(yyval.utree); ;
     break;}
 case 360:
-#line 1461 "yaccParser/hsparser.y"
+#line 1456 "yaccParser/hsparser.y"
 { yyval.utree = mknegate(yyvsp[0].utree); ;
     break;}
 case 362:
-#line 1470 "yaccParser/hsparser.y"
+#line 1465 "yaccParser/hsparser.y"
 { /* enteriscope(); /? I don't understand this -- KH */
                  hsincindent();    /* added by partain; push new context for */
                                    /* FN = NULL; not actually concerned about */
@@ -3659,71 +3671,71 @@ case 362:
                ;
     break;}
 case 363:
-#line 1477 "yaccParser/hsparser.y"
+#line 1472 "yaccParser/hsparser.y"
 { hsendindent();    /* added by partain */
                  /* exitiscope();          /? Also not understood */
                ;
     break;}
 case 364:
-#line 1481 "yaccParser/hsparser.y"
+#line 1476 "yaccParser/hsparser.y"
 {
                  yyval.utree = mklambda(yyvsp[-3].ulist, yyvsp[0].utree, yyvsp[-4].uint);
                ;
     break;}
 case 365:
-#line 1486 "yaccParser/hsparser.y"
+#line 1481 "yaccParser/hsparser.y"
 { yyval.utree = mklet(yyvsp[-3].ubinding,yyvsp[0].utree); ;
     break;}
 case 366:
-#line 1487 "yaccParser/hsparser.y"
+#line 1482 "yaccParser/hsparser.y"
 { yyval.utree = mklet(yyvsp[-3].ubinding,yyvsp[0].utree); ;
     break;}
 case 367:
-#line 1490 "yaccParser/hsparser.y"
+#line 1485 "yaccParser/hsparser.y"
 { yyval.utree = mkife(yyvsp[-4].utree,yyvsp[-2].utree,yyvsp[0].utree); ;
     break;}
 case 368:
-#line 1493 "yaccParser/hsparser.y"
+#line 1488 "yaccParser/hsparser.y"
 { yyval.utree = mkcasee(yyvsp[-4].utree,yyvsp[-1].ulist); ;
     break;}
 case 369:
-#line 1494 "yaccParser/hsparser.y"
+#line 1489 "yaccParser/hsparser.y"
 { yyval.utree = mkcasee(yyvsp[-4].utree,yyvsp[-1].ulist); ;
     break;}
 case 370:
-#line 1497 "yaccParser/hsparser.y"
+#line 1492 "yaccParser/hsparser.y"
 { yyval.utree = mkccall(yyvsp[-1].uid,installid("n"),yyvsp[0].ulist); ;
     break;}
 case 371:
-#line 1498 "yaccParser/hsparser.y"
+#line 1493 "yaccParser/hsparser.y"
 { yyval.utree = mkccall(yyvsp[0].uid,installid("n"),Lnil); ;
     break;}
 case 372:
-#line 1499 "yaccParser/hsparser.y"
+#line 1494 "yaccParser/hsparser.y"
 { yyval.utree = mkccall(yyvsp[-1].uid,installid("p"),yyvsp[0].ulist); ;
     break;}
 case 373:
-#line 1500 "yaccParser/hsparser.y"
+#line 1495 "yaccParser/hsparser.y"
 { yyval.utree = mkccall(yyvsp[0].uid,installid("p"),Lnil); ;
     break;}
 case 374:
-#line 1501 "yaccParser/hsparser.y"
+#line 1496 "yaccParser/hsparser.y"
 { yyval.utree = mkccall(yyvsp[-1].ustring,installid("N"),yyvsp[0].ulist); ;
     break;}
 case 375:
-#line 1502 "yaccParser/hsparser.y"
+#line 1497 "yaccParser/hsparser.y"
 { yyval.utree = mkccall(yyvsp[0].ustring,installid("N"),Lnil); ;
     break;}
 case 376:
-#line 1503 "yaccParser/hsparser.y"
+#line 1498 "yaccParser/hsparser.y"
 { yyval.utree = mkccall(yyvsp[-1].ustring,installid("P"),yyvsp[0].ulist); ;
     break;}
 case 377:
-#line 1504 "yaccParser/hsparser.y"
+#line 1499 "yaccParser/hsparser.y"
 { yyval.utree = mkccall(yyvsp[0].ustring,installid("P"),Lnil); ;
     break;}
 case 378:
-#line 1508 "yaccParser/hsparser.y"
+#line 1503 "yaccParser/hsparser.y"
 { if (ignoreSCC) {
                    if (warnSCC)
                        fprintf(stderr,
@@ -3736,67 +3748,67 @@ case 378:
                ;
     break;}
 case 380:
-#line 1523 "yaccParser/hsparser.y"
+#line 1518 "yaccParser/hsparser.y"
 { yyval.utree = mkap(yyvsp[-1].utree,yyvsp[0].utree); ;
     break;}
 case 382:
-#line 1527 "yaccParser/hsparser.y"
+#line 1522 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-1].ulist,yyvsp[0].utree); ;
     break;}
 case 383:
-#line 1528 "yaccParser/hsparser.y"
+#line 1523 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].utree); ;
     break;}
 case 384:
-#line 1538 "yaccParser/hsparser.y"
+#line 1533 "yaccParser/hsparser.y"
 { yyval.utree = mkident(yyvsp[0].uid); ;
     break;}
 case 385:
-#line 1539 "yaccParser/hsparser.y"
+#line 1534 "yaccParser/hsparser.y"
 { yyval.utree = mkident(yyvsp[0].uid); ;
     break;}
 case 386:
-#line 1540 "yaccParser/hsparser.y"
+#line 1535 "yaccParser/hsparser.y"
 { yyval.utree = mklit(yyvsp[0].uliteral); ;
     break;}
 case 387:
-#line 1541 "yaccParser/hsparser.y"
+#line 1536 "yaccParser/hsparser.y"
 { yyval.utree = mkpar(yyvsp[-1].utree); ;
     break;}
 case 388:
-#line 1542 "yaccParser/hsparser.y"
+#line 1537 "yaccParser/hsparser.y"
 { checkprec(yyvsp[-2].utree,yyvsp[-1].uid,FALSE); yyval.utree = mklsection(yyvsp[-2].utree,yyvsp[-1].uid); ;
     break;}
 case 389:
-#line 1543 "yaccParser/hsparser.y"
+#line 1538 "yaccParser/hsparser.y"
 { checkprec(yyvsp[-1].utree,yyvsp[-2].uid,TRUE);  yyval.utree = mkrsection(yyvsp[-2].uid,yyvsp[-1].utree); ;
     break;}
 case 391:
-#line 1547 "yaccParser/hsparser.y"
+#line 1542 "yaccParser/hsparser.y"
 { yyval.utree = mkpar(yyvsp[0].utree); ;
     break;}
 case 392:
-#line 1548 "yaccParser/hsparser.y"
+#line 1543 "yaccParser/hsparser.y"
 { yyval.utree = mkpar(yyvsp[0].utree); ;
     break;}
 case 393:
-#line 1549 "yaccParser/hsparser.y"
+#line 1544 "yaccParser/hsparser.y"
 { yyval.utree = mkpar(yyvsp[0].utree); ;
     break;}
 case 394:
-#line 1552 "yaccParser/hsparser.y"
+#line 1547 "yaccParser/hsparser.y"
 { checkinpat();  yyval.utree = mkas(yyvsp[-2].uid,yyvsp[0].utree); ;
     break;}
 case 395:
-#line 1553 "yaccParser/hsparser.y"
+#line 1548 "yaccParser/hsparser.y"
 { checkinpat();  yyval.utree = mkwildp();   ;
     break;}
 case 396:
-#line 1554 "yaccParser/hsparser.y"
+#line 1549 "yaccParser/hsparser.y"
 { checkinpat();  yyval.utree = mklazyp(yyvsp[0].utree); ;
     break;}
 case 398:
-#line 1569 "yaccParser/hsparser.y"
+#line 1564 "yaccParser/hsparser.y"
 {
                  yyval.utree = mkinfixop(yyvsp[-1].uid,yyvsp[-2].utree,yyvsp[0].utree);
 
@@ -3810,7 +3822,7 @@ case 398:
                ;
     break;}
 case 400:
-#line 1584 "yaccParser/hsparser.y"
+#line 1579 "yaccParser/hsparser.y"
 {
                  yyval.utree = mkinfixop(yyvsp[-1].uid,yyvsp[-2].utree,yyvsp[0].utree);
 
@@ -3824,119 +3836,119 @@ case 400:
                ;
     break;}
 case 401:
-#line 1603 "yaccParser/hsparser.y"
+#line 1598 "yaccParser/hsparser.y"
 { yyval.utree = mknegate(yyvsp[0].utree); ;
     break;}
 case 403:
-#line 1608 "yaccParser/hsparser.y"
+#line 1603 "yaccParser/hsparser.y"
 { yyval.utree = mkap(yyvsp[-1].utree,yyvsp[0].utree); ;
     break;}
 case 405:
-#line 1612 "yaccParser/hsparser.y"
+#line 1607 "yaccParser/hsparser.y"
 { yyval.utree = mknegate(yyvsp[0].utree); ;
     break;}
 case 407:
-#line 1617 "yaccParser/hsparser.y"
+#line 1612 "yaccParser/hsparser.y"
 { yyval.utree = mkap(yyvsp[-1].utree,yyvsp[0].utree); ;
     break;}
 case 409:
-#line 1621 "yaccParser/hsparser.y"
+#line 1616 "yaccParser/hsparser.y"
 { yyval.utree = mkident(yyvsp[0].uid); ;
     break;}
 case 410:
-#line 1622 "yaccParser/hsparser.y"
+#line 1617 "yaccParser/hsparser.y"
 { yyval.utree = mkident(yyvsp[0].uid); ;
     break;}
 case 411:
-#line 1623 "yaccParser/hsparser.y"
+#line 1618 "yaccParser/hsparser.y"
 { yyval.utree = mkas(yyvsp[-2].uid,yyvsp[0].utree); ;
     break;}
 case 412:
-#line 1624 "yaccParser/hsparser.y"
+#line 1619 "yaccParser/hsparser.y"
 { yyval.utree = mklit(yyvsp[0].uliteral); ;
     break;}
 case 413:
-#line 1625 "yaccParser/hsparser.y"
+#line 1620 "yaccParser/hsparser.y"
 { yyval.utree = mkwildp(); ;
     break;}
 case 414:
-#line 1626 "yaccParser/hsparser.y"
+#line 1621 "yaccParser/hsparser.y"
 { yyval.utree = mktuple(Lnil); ;
     break;}
 case 415:
-#line 1627 "yaccParser/hsparser.y"
+#line 1622 "yaccParser/hsparser.y"
 { yyval.utree = mkplusp(mkident(yyvsp[-3].uid),mkinteger(yyvsp[-1].ustring)); ;
     break;}
 case 416:
-#line 1631 "yaccParser/hsparser.y"
+#line 1626 "yaccParser/hsparser.y"
 { yyval.utree = mkpar(yyvsp[-1].utree); ;
     break;}
 case 417:
-#line 1632 "yaccParser/hsparser.y"
+#line 1627 "yaccParser/hsparser.y"
 { yyval.utree = mktuple(mklcons(yyvsp[-3].utree,yyvsp[-1].ulist)); ;
     break;}
 case 418:
-#line 1633 "yaccParser/hsparser.y"
+#line 1628 "yaccParser/hsparser.y"
 { yyval.utree = mkllist(yyvsp[-1].ulist); ;
     break;}
 case 419:
-#line 1634 "yaccParser/hsparser.y"
+#line 1629 "yaccParser/hsparser.y"
 { yyval.utree = mkllist(Lnil); ;
     break;}
 case 420:
-#line 1635 "yaccParser/hsparser.y"
+#line 1630 "yaccParser/hsparser.y"
 { yyval.utree = mklazyp(yyvsp[0].utree); ;
     break;}
 case 421:
-#line 1638 "yaccParser/hsparser.y"
+#line 1633 "yaccParser/hsparser.y"
 { yyval.utree = mkident(yyvsp[0].uid); ;
     break;}
 case 422:
-#line 1639 "yaccParser/hsparser.y"
+#line 1634 "yaccParser/hsparser.y"
 { yyval.utree = mkident(yyvsp[0].uid); ;
     break;}
 case 423:
-#line 1640 "yaccParser/hsparser.y"
+#line 1635 "yaccParser/hsparser.y"
 { yyval.utree = mkas(yyvsp[-2].uid,yyvsp[0].utree); ;
     break;}
 case 424:
-#line 1641 "yaccParser/hsparser.y"
+#line 1636 "yaccParser/hsparser.y"
 { yyval.utree = mklit(yyvsp[0].uliteral); setstartlineno(); ;
     break;}
 case 425:
-#line 1642 "yaccParser/hsparser.y"
+#line 1637 "yaccParser/hsparser.y"
 { yyval.utree = mkwildp(); setstartlineno(); ;
     break;}
 case 426:
-#line 1643 "yaccParser/hsparser.y"
+#line 1638 "yaccParser/hsparser.y"
 { yyval.utree = mktuple(Lnil); ;
     break;}
 case 427:
-#line 1644 "yaccParser/hsparser.y"
+#line 1639 "yaccParser/hsparser.y"
 { yyval.utree = mkplusp(mkident(yyvsp[-3].uid),mkinteger(yyvsp[-1].ustring)); ;
     break;}
 case 428:
-#line 1648 "yaccParser/hsparser.y"
+#line 1643 "yaccParser/hsparser.y"
 { yyval.utree = mkpar(yyvsp[-1].utree); ;
     break;}
 case 429:
-#line 1649 "yaccParser/hsparser.y"
+#line 1644 "yaccParser/hsparser.y"
 { yyval.utree = mktuple(mklcons(yyvsp[-3].utree,yyvsp[-1].ulist)); ;
     break;}
 case 430:
-#line 1650 "yaccParser/hsparser.y"
+#line 1645 "yaccParser/hsparser.y"
 { yyval.utree = mkllist(yyvsp[-1].ulist); ;
     break;}
 case 431:
-#line 1651 "yaccParser/hsparser.y"
+#line 1646 "yaccParser/hsparser.y"
 { yyval.utree = mkllist(Lnil); ;
     break;}
 case 432:
-#line 1652 "yaccParser/hsparser.y"
+#line 1647 "yaccParser/hsparser.y"
 { yyval.utree = mklazyp(yyvsp[0].utree); ;
     break;}
 case 433:
-#line 1657 "yaccParser/hsparser.y"
+#line 1652 "yaccParser/hsparser.y"
 { if (ttree(yyvsp[-1].utree) == tuple)
                    yyval.utree = mktuple(mklcons(yyvsp[-3].utree, gtuplelist((struct Stuple *) yyvsp[-1].utree)));
                else
@@ -3944,15 +3956,15 @@ case 433:
                ;
     break;}
 case 434:
-#line 1663 "yaccParser/hsparser.y"
+#line 1658 "yaccParser/hsparser.y"
 { yyval.utree = mktuple(Lnil); ;
     break;}
 case 435:
-#line 1671 "yaccParser/hsparser.y"
+#line 1666 "yaccParser/hsparser.y"
 { yyval.utree = mkpar(yyvsp[0].utree); ;
     break;}
 case 436:
-#line 1673 "yaccParser/hsparser.y"
+#line 1668 "yaccParser/hsparser.y"
 { if (ttree(yyvsp[0].utree) == tuple)
                    yyval.utree = mktuple(mklcons(yyvsp[-2].utree, gtuplelist((struct Stuple *) yyvsp[0].utree)));
                else
@@ -3960,51 +3972,51 @@ case 436:
                ;
     break;}
 case 437:
-#line 1682 "yaccParser/hsparser.y"
+#line 1677 "yaccParser/hsparser.y"
 { yyval.utree = mkllist(Lnil); ;
     break;}
 case 438:
-#line 1683 "yaccParser/hsparser.y"
+#line 1678 "yaccParser/hsparser.y"
 { yyval.utree = mkllist(yyvsp[-1].ulist); ;
     break;}
 case 439:
-#line 1687 "yaccParser/hsparser.y"
+#line 1682 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].utree); ;
     break;}
 case 440:
-#line 1688 "yaccParser/hsparser.y"
+#line 1683 "yaccParser/hsparser.y"
 { yyval.ulist = mklcons(yyvsp[-2].utree, yyvsp[0].ulist); ;
     break;}
 case 441:
-#line 1703 "yaccParser/hsparser.y"
+#line 1698 "yaccParser/hsparser.y"
 {yyval.utree = mkeenum(yyvsp[-5].utree,lsing(yyvsp[-3].utree),yyvsp[-1].ulist);;
     break;}
 case 442:
-#line 1704 "yaccParser/hsparser.y"
+#line 1699 "yaccParser/hsparser.y"
 { yyval.utree = mkeenum(yyvsp[-3].utree,Lnil,yyvsp[-1].ulist); ;
     break;}
 case 443:
-#line 1707 "yaccParser/hsparser.y"
+#line 1702 "yaccParser/hsparser.y"
 { yyval.utree = mkcomprh(yyvsp[-3].utree,yyvsp[-1].ulist); ;
     break;}
 case 444:
-#line 1710 "yaccParser/hsparser.y"
+#line 1705 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].utree); ;
     break;}
 case 445:
-#line 1711 "yaccParser/hsparser.y"
+#line 1706 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].utree); ;
     break;}
 case 446:
-#line 1714 "yaccParser/hsparser.y"
+#line 1709 "yaccParser/hsparser.y"
 { inpat = TRUE; ;
     break;}
 case 447:
-#line 1714 "yaccParser/hsparser.y"
+#line 1709 "yaccParser/hsparser.y"
 { inpat = FALSE; ;
     break;}
 case 448:
-#line 1715 "yaccParser/hsparser.y"
+#line 1710 "yaccParser/hsparser.y"
 { if (yyvsp[0].utree == NULL) {
                    patternOrExpr(/*wanted:*/ LEGIT_EXPR,yyvsp[-2].utree);
                    yyval.utree = mkguard(yyvsp[-2].utree);
@@ -4025,197 +4037,197 @@ case 448:
                ;
     break;}
 case 449:
-#line 1735 "yaccParser/hsparser.y"
+#line 1730 "yaccParser/hsparser.y"
 { yyval.utree = yyvsp[0].utree; ;
     break;}
 case 450:
-#line 1736 "yaccParser/hsparser.y"
+#line 1731 "yaccParser/hsparser.y"
 { yyval.utree = NULL; ;
     break;}
 case 451:
-#line 1739 "yaccParser/hsparser.y"
+#line 1734 "yaccParser/hsparser.y"
 { yyval.ulist = yyvsp[0].ulist; ;
     break;}
 case 452:
-#line 1740 "yaccParser/hsparser.y"
+#line 1735 "yaccParser/hsparser.y"
 { yyval.ulist = lconc(yyvsp[-2].ulist,yyvsp[0].ulist); ;
     break;}
 case 453:
-#line 1744 "yaccParser/hsparser.y"
+#line 1739 "yaccParser/hsparser.y"
 { PREVPATT = yyvsp[0].utree; ;
     break;}
 case 454:
-#line 1746 "yaccParser/hsparser.y"
+#line 1741 "yaccParser/hsparser.y"
 { yyval.ulist = yyvsp[0].ulist;
                  PREVPATT = NULL;
                ;
     break;}
 case 455:
-#line 1749 "yaccParser/hsparser.y"
+#line 1744 "yaccParser/hsparser.y"
 { yyval.ulist = Lnil; ;
     break;}
 case 456:
-#line 1752 "yaccParser/hsparser.y"
+#line 1747 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(createpat(yyvsp[-1].ulist, yyvsp[0].ubinding)); ;
     break;}
 case 457:
-#line 1753 "yaccParser/hsparser.y"
+#line 1748 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(createpat(lsing(mktruecase(yyvsp[-1].utree)), yyvsp[0].ubinding)); ;
     break;}
 case 458:
-#line 1756 "yaccParser/hsparser.y"
+#line 1751 "yaccParser/hsparser.y"
 { yyval.ulist = mklcons(ldub(yyvsp[-3].utree,yyvsp[-1].utree),yyvsp[0].ulist);  ;
     break;}
 case 459:
-#line 1757 "yaccParser/hsparser.y"
+#line 1752 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(ldub(yyvsp[-2].utree,yyvsp[0].utree)); ;
     break;}
 case 460:
-#line 1760 "yaccParser/hsparser.y"
+#line 1755 "yaccParser/hsparser.y"
 { yyval.ulist = Lnil; ;
     break;}
 case 461:
-#line 1761 "yaccParser/hsparser.y"
+#line 1756 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].utree); ;
     break;}
 case 462:
-#line 1764 "yaccParser/hsparser.y"
+#line 1759 "yaccParser/hsparser.y"
 { yyval.ulist = mklcons(yyvsp[-2].utree, yyvsp[0].ulist); ;
     break;}
 case 463:
-#line 1765 "yaccParser/hsparser.y"
+#line 1760 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].utree); ;
     break;}
 case 465:
-#line 1770 "yaccParser/hsparser.y"
+#line 1765 "yaccParser/hsparser.y"
 { yyval.utree = mkinfixop(yyvsp[-1].uid,yyvsp[-2].utree,yyvsp[0].utree); precparse(yyval.utree); ;
     break;}
 case 468:
-#line 1775 "yaccParser/hsparser.y"
+#line 1770 "yaccParser/hsparser.y"
 { yyval.utree = mklit(mkinteger(ineg(yyvsp[0].ustring))); ;
     break;}
 case 469:
-#line 1776 "yaccParser/hsparser.y"
+#line 1771 "yaccParser/hsparser.y"
 { yyval.utree = mklit(mkfloatr(ineg(yyvsp[0].ustring))); ;
     break;}
 case 470:
-#line 1779 "yaccParser/hsparser.y"
+#line 1774 "yaccParser/hsparser.y"
 { yyval.utree = mkident(yyvsp[0].uid); ;
     break;}
 case 471:
-#line 1780 "yaccParser/hsparser.y"
+#line 1775 "yaccParser/hsparser.y"
 { yyval.utree = mkap(yyvsp[-1].utree,yyvsp[0].utree); ;
     break;}
 case 472:
-#line 1783 "yaccParser/hsparser.y"
+#line 1778 "yaccParser/hsparser.y"
 { yyval.utree = mkident(yyvsp[0].uid); ;
     break;}
 case 474:
-#line 1787 "yaccParser/hsparser.y"
+#line 1782 "yaccParser/hsparser.y"
 { yyval.utree = mkident(yyvsp[0].uid); ;
     break;}
 case 475:
-#line 1788 "yaccParser/hsparser.y"
+#line 1783 "yaccParser/hsparser.y"
 { yyval.utree = mkas(yyvsp[-2].uid,yyvsp[0].utree); ;
     break;}
 case 476:
-#line 1789 "yaccParser/hsparser.y"
+#line 1784 "yaccParser/hsparser.y"
 { yyval.utree = mklit(yyvsp[0].uliteral); ;
     break;}
 case 477:
-#line 1790 "yaccParser/hsparser.y"
+#line 1785 "yaccParser/hsparser.y"
 { yyval.utree = mkwildp(); ;
     break;}
 case 478:
-#line 1791 "yaccParser/hsparser.y"
+#line 1786 "yaccParser/hsparser.y"
 { yyval.utree = mktuple(Lnil); ;
     break;}
 case 479:
-#line 1792 "yaccParser/hsparser.y"
+#line 1787 "yaccParser/hsparser.y"
 { yyval.utree = mkplusp(mkident(yyvsp[-3].uid),mkinteger(yyvsp[-1].ustring)); ;
     break;}
 case 480:
-#line 1796 "yaccParser/hsparser.y"
+#line 1791 "yaccParser/hsparser.y"
 { yyval.utree = mkpar(yyvsp[-1].utree); ;
     break;}
 case 481:
-#line 1797 "yaccParser/hsparser.y"
+#line 1792 "yaccParser/hsparser.y"
 { yyval.utree = mktuple(mklcons(yyvsp[-3].utree,yyvsp[-1].ulist)); ;
     break;}
 case 482:
-#line 1798 "yaccParser/hsparser.y"
+#line 1793 "yaccParser/hsparser.y"
 { yyval.utree = mkllist(yyvsp[-1].ulist); ;
     break;}
 case 483:
-#line 1799 "yaccParser/hsparser.y"
+#line 1794 "yaccParser/hsparser.y"
 { yyval.utree = mkllist(Lnil); ;
     break;}
 case 484:
-#line 1800 "yaccParser/hsparser.y"
+#line 1795 "yaccParser/hsparser.y"
 { yyval.utree = mklazyp(yyvsp[0].utree); ;
     break;}
 case 485:
-#line 1804 "yaccParser/hsparser.y"
+#line 1799 "yaccParser/hsparser.y"
 { yyval.uliteral = mkinteger(yyvsp[0].ustring); ;
     break;}
 case 486:
-#line 1805 "yaccParser/hsparser.y"
+#line 1800 "yaccParser/hsparser.y"
 { yyval.uliteral = mkfloatr(yyvsp[0].ustring); ;
     break;}
 case 487:
-#line 1806 "yaccParser/hsparser.y"
+#line 1801 "yaccParser/hsparser.y"
 { yyval.uliteral = mkcharr(yyvsp[0].uhstring); ;
     break;}
 case 488:
-#line 1807 "yaccParser/hsparser.y"
+#line 1802 "yaccParser/hsparser.y"
 { yyval.uliteral = mkstring(yyvsp[0].uhstring); ;
     break;}
 case 489:
-#line 1808 "yaccParser/hsparser.y"
+#line 1803 "yaccParser/hsparser.y"
 { yyval.uliteral = mkcharprim(yyvsp[0].uhstring); ;
     break;}
 case 490:
-#line 1809 "yaccParser/hsparser.y"
+#line 1804 "yaccParser/hsparser.y"
 { yyval.uliteral = mkstringprim(yyvsp[0].uhstring); ;
     break;}
 case 491:
-#line 1810 "yaccParser/hsparser.y"
+#line 1805 "yaccParser/hsparser.y"
 { yyval.uliteral = mkintprim(yyvsp[0].ustring); ;
     break;}
 case 492:
-#line 1811 "yaccParser/hsparser.y"
+#line 1806 "yaccParser/hsparser.y"
 { yyval.uliteral = mkfloatprim(yyvsp[0].ustring); ;
     break;}
 case 493:
-#line 1812 "yaccParser/hsparser.y"
+#line 1807 "yaccParser/hsparser.y"
 { yyval.uliteral = mkdoubleprim(yyvsp[0].ustring); ;
     break;}
 case 494:
-#line 1813 "yaccParser/hsparser.y"
+#line 1808 "yaccParser/hsparser.y"
 { yyval.uliteral = mkclitlit(yyvsp[0].ustring, ""); ;
     break;}
 case 495:
-#line 1814 "yaccParser/hsparser.y"
+#line 1809 "yaccParser/hsparser.y"
 { yyval.uliteral = mkclitlit(yyvsp[-2].ustring, yyvsp[0].uid); ;
     break;}
 case 496:
-#line 1815 "yaccParser/hsparser.y"
+#line 1810 "yaccParser/hsparser.y"
 { yyval.uliteral = mknorepi(yyvsp[0].ustring); ;
     break;}
 case 497:
-#line 1816 "yaccParser/hsparser.y"
+#line 1811 "yaccParser/hsparser.y"
 { yyval.uliteral = mknorepr(yyvsp[-1].ustring, yyvsp[0].ustring); ;
     break;}
 case 498:
-#line 1817 "yaccParser/hsparser.y"
+#line 1812 "yaccParser/hsparser.y"
 { yyval.uliteral = mknoreps(yyvsp[0].uhstring); ;
     break;}
 case 499:
-#line 1823 "yaccParser/hsparser.y"
+#line 1818 "yaccParser/hsparser.y"
 { setstartlineno(); ;
     break;}
 case 500:
-#line 1826 "yaccParser/hsparser.y"
+#line 1821 "yaccParser/hsparser.y"
 { setstartlineno();
                          if(etags)
 #if 1/*etags*/
@@ -4226,7 +4238,7 @@ case 500:
                        ;
     break;}
 case 501:
-#line 1836 "yaccParser/hsparser.y"
+#line 1831 "yaccParser/hsparser.y"
 { setstartlineno();
                          if(etags)
 #if 1/*etags*/
@@ -4237,7 +4249,7 @@ case 501:
                        ;
     break;}
 case 502:
-#line 1846 "yaccParser/hsparser.y"
+#line 1841 "yaccParser/hsparser.y"
 { setstartlineno();
 #if 1/*etags*/
 /* OUT:                          if(etags)
@@ -4249,11 +4261,11 @@ case 502:
                        ;
     break;}
 case 503:
-#line 1857 "yaccParser/hsparser.y"
+#line 1852 "yaccParser/hsparser.y"
 { setstartlineno(); ;
     break;}
 case 504:
-#line 1860 "yaccParser/hsparser.y"
+#line 1855 "yaccParser/hsparser.y"
 { setstartlineno();
                          if(etags)
 #if 1/*etags*/
@@ -4264,11 +4276,11 @@ case 504:
                        ;
     break;}
 case 505:
-#line 1870 "yaccParser/hsparser.y"
+#line 1865 "yaccParser/hsparser.y"
 { setstartlineno(); ;
     break;}
 case 506:
-#line 1873 "yaccParser/hsparser.y"
+#line 1868 "yaccParser/hsparser.y"
 { setstartlineno();
                          if(etags)
 #if 1/*etags*/
@@ -4279,117 +4291,117 @@ case 506:
                        ;
     break;}
 case 507:
-#line 1883 "yaccParser/hsparser.y"
+#line 1878 "yaccParser/hsparser.y"
 { setstartlineno(); ;
     break;}
 case 508:
-#line 1886 "yaccParser/hsparser.y"
+#line 1881 "yaccParser/hsparser.y"
 { setstartlineno(); ;
     break;}
 case 509:
-#line 1889 "yaccParser/hsparser.y"
+#line 1884 "yaccParser/hsparser.y"
 { setstartlineno(); ;
     break;}
 case 515:
-#line 1904 "yaccParser/hsparser.y"
+#line 1899 "yaccParser/hsparser.y"
 { yyval.uid = yyvsp[-1].uid; ;
     break;}
 case 518:
-#line 1910 "yaccParser/hsparser.y"
+#line 1905 "yaccParser/hsparser.y"
 { yyval.uid = yyvsp[-1].uid; ;
     break;}
 case 520:
-#line 1914 "yaccParser/hsparser.y"
+#line 1909 "yaccParser/hsparser.y"
 { yyval.uid = yyvsp[-1].uid; ;
     break;}
 case 524:
-#line 1922 "yaccParser/hsparser.y"
+#line 1917 "yaccParser/hsparser.y"
 { yyval.uid = install_literal("-"); ;
     break;}
 case 525:
-#line 1925 "yaccParser/hsparser.y"
+#line 1920 "yaccParser/hsparser.y"
 { yyval.uid = install_literal("+"); ;
     break;}
 case 527:
-#line 1929 "yaccParser/hsparser.y"
+#line 1924 "yaccParser/hsparser.y"
 { yyval.uid = yyvsp[-1].uid; ;
     break;}
 case 528:
-#line 1932 "yaccParser/hsparser.y"
+#line 1927 "yaccParser/hsparser.y"
 { setstartlineno(); yyval.uid = yyvsp[0].uid; ;
     break;}
 case 529:
-#line 1933 "yaccParser/hsparser.y"
+#line 1928 "yaccParser/hsparser.y"
 { yyval.uid = yyvsp[-1].uid; ;
     break;}
 case 531:
-#line 1938 "yaccParser/hsparser.y"
+#line 1933 "yaccParser/hsparser.y"
 { yyval.uid = yyvsp[-1].uid; ;
     break;}
 case 532:
-#line 1941 "yaccParser/hsparser.y"
+#line 1936 "yaccParser/hsparser.y"
 { setstartlineno(); yyval.uid = yyvsp[0].uid; ;
     break;}
 case 533:
-#line 1942 "yaccParser/hsparser.y"
+#line 1937 "yaccParser/hsparser.y"
 { yyval.uid = yyvsp[-1].uid; ;
     break;}
 case 536:
-#line 1950 "yaccParser/hsparser.y"
-{ yyval.ulist = mklcons(yyvsp[-2].uttype,lsing(yyvsp[0].uttype)); ;
+#line 1944 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uttype); ;
     break;}
 case 537:
-#line 1951 "yaccParser/hsparser.y"
-{ yyval.ulist = mklcons(yyvsp[-2].uttype,yyvsp[0].ulist); ;
+#line 1945 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uttype); ;
     break;}
 case 538:
-#line 1955 "yaccParser/hsparser.y"
+#line 1948 "yaccParser/hsparser.y"
 { yyval.ulist = lsing(yyvsp[0].uttype); ;
     break;}
 case 539:
-#line 1956 "yaccParser/hsparser.y"
+#line 1949 "yaccParser/hsparser.y"
 { yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].uttype); ;
     break;}
 case 540:
-#line 1959 "yaccParser/hsparser.y"
+#line 1952 "yaccParser/hsparser.y"
 { yyval.uttype = mknamedtvar(yyvsp[0].uid); ;
     break;}
 case 544:
-#line 1975 "yaccParser/hsparser.y"
+#line 1968 "yaccParser/hsparser.y"
 { hsincindent(); ;
     break;}
 case 545:
-#line 1977 "yaccParser/hsparser.y"
+#line 1970 "yaccParser/hsparser.y"
 { hssetindent(); ;
     break;}
 case 546:
-#line 1980 "yaccParser/hsparser.y"
+#line 1973 "yaccParser/hsparser.y"
 { hsindentoff(); ;
     break;}
 case 547:
-#line 1985 "yaccParser/hsparser.y"
+#line 1978 "yaccParser/hsparser.y"
 {
                  FN = NULL; SAMEFN = 0; PREVPATT = NULL;
                  hsendindent();
                ;
     break;}
 case 548:
-#line 1991 "yaccParser/hsparser.y"
+#line 1984 "yaccParser/hsparser.y"
 { expect_ccurly = 1; ;
     break;}
 case 549:
-#line 1991 "yaccParser/hsparser.y"
+#line 1984 "yaccParser/hsparser.y"
 { expect_ccurly = 0; ;
     break;}
 case 550:
-#line 1996 "yaccParser/hsparser.y"
+#line 1989 "yaccParser/hsparser.y"
 {
                  FN = NULL; SAMEFN = 0; PREVPATT = NULL;
                  hsendindent();
                ;
     break;}
 case 551:
-#line 2001 "yaccParser/hsparser.y"
+#line 1994 "yaccParser/hsparser.y"
 {
                  yyerrok;
                  FN = NULL; SAMEFN = 0; PREVPATT = NULL;
@@ -4594,7 +4606,7 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 2008 "yaccParser/hsparser.y"
+#line 2001 "yaccParser/hsparser.y"
 
 
 /**********************************************************************