⛏️ index : buildtools.git

author Oliver Tappe <zooey@hirschkaefer.de> 2005-02-19 13:01:14.0 +00:00:00
committer Oliver Tappe <zooey@hirschkaefer.de> 2005-02-19 13:01:14.0 +00:00:00
commit
d01020874b3cefe69dcf4b9f57f60c2c406bd965 [patch]
tree
81191bd7ae94e3065e0fe42b66687a71ee61570e
parent
8f01cb10fde198166450eebe9e842553a363d2f9
download
d01020874b3cefe69dcf4b9f57f60c2c406bd965.tar.gz

- Applied several (old, external) patches that enable the support for anonymous structs and unions in C as well as in C++ (application of this patch has been sugggested by execom through BeBits-talkback).

  This mail-thread explains the problem & solution:
      http://gcc.gnu.org/ml/gcc-bugs/1999-08n/msg00914.html

  These are the patches that have been applied:
      gcc-2.95-anon-struct-union.diff
      gcc-2.95-c++-tidy.diff
      gcc-2.95-c++-anon-struct.diff
      gcc-2.95-c++-anon-struct2.diff
  which can all be found here:
  		ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/cygwin/gcc-2.95/patches/


git-svn-id: file:///srv/svn/repos/haiku/trunk/buildtools@11421 a95241bf-73f2-0310-859d-f6bbb57e9c96

Diff

 gcc/gcc/c-decl.c          |   37 -------------------------------------
 gcc/gcc/c-parse.c         | 1597 +++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
 gcc/gcc/c-parse.in        |   25 +++++++++++++++++--------
 gcc/gcc/c-parse.y         |   23 ++++++++++++++++-------
 gcc/gcc/cp/call.c         |  125 --------------------------------------------------------------------------------
 gcc/gcc/cp/class.c        |   12 ++++--------
 gcc/gcc/cp/cp-tree.h      |   20 +++++++++-----------
 gcc/gcc/cp/decl.c         |   17 ++++++++++-------
 gcc/gcc/cp/decl2.c        |   13 +++++++++----
 gcc/gcc/cp/init.c         |   59 +++++++++++++++++++++++++++++------------------------------
 gcc/gcc/cp/method.c       |   31 +++++++------------------------
 gcc/gcc/cp/pt.c           |    4 ++--
 gcc/gcc/cp/ptree.c        |    6 +-----
 gcc/gcc/cp/search.c       |    8 ++++----
 gcc/gcc/cp/typeck.c       |   12 +++++-------
 gcc/gcc/cp/typeck2.c      |    2 +-
 gcc/gcc/objc/objc-parse.y |   23 ++++++++++++++++-------
 17 files changed, 934 insertions(+), 1080 deletions(-)

diff --git a/gcc/gcc/c-decl.c b/gcc/gcc/c-decl.c
index 6f8a900..07fb1c7 100644
--- a/gcc/gcc/c-decl.c
+++ b/gcc/gcc/c-decl.c
@@ -6046,43 +6046,6 @@

  TYPE_FIELDS (t) = fieldlist;

  /* If there are lots of fields, sort so we can look through them fast.
     We arbitrarily consider 16 or more elts to be "a lot".  */
  {
    int len = 0;

    for (x = fieldlist; x; x = TREE_CHAIN (x))
      {
	if (len > 15)
	  break;
	len += 1;
      }
    if (len > 15)
      {
	tree *field_array;
	char *space;

	len += list_length (x);
	/* Use the same allocation policy here that make_node uses, to
	   ensure that this lives as long as the rest of the struct decl.
	   All decls in an inline function need to be saved.  */
	if (allocation_temporary_p ())
	  space = savealloc (sizeof (struct lang_type) + len * sizeof (tree));
	else
	  space = oballoc (sizeof (struct lang_type) + len * sizeof (tree));

	TYPE_LANG_SPECIFIC (t) = (struct lang_type *) space;
	TYPE_LANG_SPECIFIC (t)->len = len;

	field_array = &TYPE_LANG_SPECIFIC (t)->elts[0];
	len = 0;
	for (x = fieldlist; x; x = TREE_CHAIN (x))
	  field_array[len++] = x;

	qsort (field_array, len, sizeof (tree), field_decl_cmp);
      }
  }

  for (x = TYPE_MAIN_VARIANT (t); x; x = TYPE_NEXT_VARIANT (x))
    {
      TYPE_FIELDS (x) = TYPE_FIELDS (t);
diff --git a/gcc/gcc/c-parse.c b/gcc/gcc/c-parse.c
index 789da2a..9de4afe 100644
--- a/gcc/gcc/c-parse.c
+++ b/gcc/gcc/c-parse.c
@@ -144,7 +144,7 @@



#define	YYFINAL		692
#define	YYFINAL		696
#define	YYFLAG		-32768
#define	YYNTBASE	84

@@ -213,21 +213,21 @@
   713,   717,   721,   726,   731,   735,   739,   741,   743,   746,
   748,   751,   753,   756,   757,   765,   771,   774,   775,   783,
   789,   792,   793,   802,   803,   811,   814,   815,   817,   818,
   820,   822,   825,   826,   830,   833,   837,   839,   843,   845,
   847,   850,   852,   856,   861,   868,   874,   876,   880,   882,
   884,   888,   891,   894,   895,   897,   899,   902,   903,   906,
   910,   914,   917,   921,   926,   930,   933,   937,   940,   944,
   946,   948,   951,   954,   955,   957,   960,   961,   962,   964,
   966,   969,   973,   975,   978,   980,   983,   990,   996,  1002,
  1005,  1008,  1013,  1014,  1019,  1020,  1021,  1025,  1030,  1034,
  1036,  1038,  1040,  1042,  1045,  1046,  1051,  1053,  1057,  1058,
  1059,  1067,  1073,  1076,  1077,  1078,  1079,  1092,  1093,  1100,
  1103,  1106,  1109,  1113,  1120,  1129,  1140,  1153,  1157,  1162,
  1164,  1166,  1167,  1174,  1178,  1184,  1187,  1191,  1192,  1194,
  1195,  1197,  1198,  1200,  1202,  1206,  1211,  1213,  1217,  1218,
  1221,  1224,  1225,  1230,  1233,  1234,  1236,  1238,  1242,  1244,
  1248,  1253,  1258,  1263,  1268,  1273,  1274,  1277,  1279,  1282,
  1284,  1288,  1290,  1294
   820,   822,   825,   826,   830,   833,   837,   843,   847,   849,
   851,   854,   856,   860,   865,   872,   878,   880,   884,   886,
   888,   892,   895,   898,   899,   901,   903,   906,   907,   910,
   914,   918,   921,   925,   930,   934,   937,   941,   944,   948,
   950,   952,   955,   958,   959,   961,   964,   965,   966,   968,
   970,   973,   977,   979,   982,   984,   987,   994,  1000,  1006,
  1009,  1012,  1017,  1018,  1023,  1024,  1025,  1029,  1034,  1038,
  1040,  1042,  1044,  1046,  1049,  1050,  1055,  1057,  1061,  1062,
  1063,  1071,  1077,  1080,  1081,  1082,  1083,  1096,  1097,  1104,
  1107,  1110,  1113,  1117,  1124,  1133,  1144,  1157,  1161,  1166,
  1168,  1170,  1171,  1178,  1182,  1188,  1191,  1195,  1196,  1198,
  1199,  1201,  1202,  1204,  1206,  1210,  1215,  1217,  1221,  1222,
  1225,  1228,  1229,  1234,  1237,  1238,  1240,  1242,  1246,  1248,
  1252,  1257,  1262,  1267,  1272,  1277,  1278,  1281,  1283,  1286,
  1288,  1292,  1294,  1298
};

static const short yyrhs[] = {    -1,
@@ -314,53 +314,53 @@
     0,     0,   170,    82,   175,   183,   177,    78,   142,     0,
   170,    97,     0,     0,    81,     0,     0,    81,     0,   179,
     0,   179,   180,     0,     0,   179,   180,    77,     0,   179,
    77,     0,   131,   122,   181,     0,   131,     0,   187,   122,
   181,     0,   187,     0,     1,     0,   240,   180,     0,   182,
     0,   181,    81,   182,     0,   205,   206,   164,   142,     0,
   205,   206,   164,    38,   107,   142,     0,   205,   206,    38,
   107,   142,     0,   184,     0,   183,    81,   184,     0,     1,
     0,    97,     0,    97,    36,   107,     0,   131,   186,     0,
   187,   186,     0,     0,   189,     0,     7,     0,   187,     7,
     0,     0,   188,     7,     0,    59,   189,    76,     0,    50,
   188,   189,     0,    50,   188,     0,   189,    59,   228,     0,
   189,    60,    99,    83,     0,   189,    60,    83,     0,    59,
   228,     0,    60,    99,    83,     0,    60,    83,     0,   143,
   123,   189,     0,   191,     0,   208,     0,   191,   208,     0,
   191,   193,     0,     0,   190,     0,     1,    77,     0,     0,
     0,   196,     0,   197,     0,   196,   197,     0,    32,   239,
    77,     0,   200,     0,     1,   200,     0,    82,     0,   199,
    78,     0,   199,   194,   195,   121,   192,    78,     0,   199,
   194,   195,     1,    78,     0,   199,   194,   195,   190,    78,
     0,   202,   207,     0,   202,     1,     0,    15,    59,    99,
    76,     0,     0,    18,   204,   207,    17,     0,     0,     0,
   205,   206,   210,     0,   205,   206,   221,   207,     0,   205,
   206,   209,     0,   210,     0,   221,     0,   200,     0,   218,
     0,    99,    77,     0,     0,   201,    16,   211,   207,     0,
   201,     0,   201,    16,     1,     0,     0,     0,    17,   212,
    59,    99,    76,   213,   207,     0,   203,    59,    99,    76,
    77,     0,   203,     1,     0,     0,     0,     0,    19,    59,
   223,    77,   214,   223,    77,   215,   223,    76,   216,   207,
     0,     0,    20,    59,    99,    76,   217,   207,     0,    23,
    77,     0,    24,    77,     0,    25,    77,     0,    25,    99,
    77,     0,    27,   222,    59,    99,    76,    77,     0,    27,
   222,    59,    99,    38,   224,    76,    77,     0,    27,   222,
    59,    99,    38,   224,    38,   224,    76,    77,     0,    27,
   222,    59,    99,    38,   224,    38,   224,    38,   227,    76,
    77,     0,    26,    97,    77,     0,    26,    50,    99,    77,
     0,    77,     0,   219,     0,     0,    19,    59,   113,    76,
   220,   207,     0,    21,   107,    38,     0,    21,   107,    10,
   107,    38,     0,    22,    38,     0,    97,    38,   142,     0,
     0,     7,     0,     0,    99,     0,     0,   225,     0,   226,
     0,   225,    81,   226,     0,     9,    59,    99,    76,     0,
   115,     0,   227,    81,   115,     0,     0,   229,   230,     0,
   232,    76,     0,     0,   233,    77,   231,   230,     0,     1,
    76,     0,     0,    10,     0,   233,     0,   233,    81,    10,
     0,   234,     0,   233,    81,   234,     0,   125,   122,   166,
   142,     0,   125,   122,   167,   142,     0,   125,   122,   186,
   142,     0,   129,   122,   167,   142,     0,   129,   122,   186,
   142,     0,     0,   236,   237,     0,   230,     0,   238,    76,
     0,     3,     0,   238,    81,     3,     0,    97,     0,   239,
    81,    97,     0,    31,     0
    77,     0,   131,   122,   181,     0,   131,   122,   205,   206,
   142,     0,   187,   122,   181,     0,   187,     0,     1,     0,
   240,   180,     0,   182,     0,   181,    81,   182,     0,   205,
   206,   164,   142,     0,   205,   206,   164,    38,   107,   142,
     0,   205,   206,    38,   107,   142,     0,   184,     0,   183,
    81,   184,     0,     1,     0,    97,     0,    97,    36,   107,
     0,   131,   186,     0,   187,   186,     0,     0,   189,     0,
     7,     0,   187,     7,     0,     0,   188,     7,     0,    59,
   189,    76,     0,    50,   188,   189,     0,    50,   188,     0,
   189,    59,   228,     0,   189,    60,    99,    83,     0,   189,
    60,    83,     0,    59,   228,     0,    60,    99,    83,     0,
    60,    83,     0,   143,   123,   189,     0,   191,     0,   208,
     0,   191,   208,     0,   191,   193,     0,     0,   190,     0,
     1,    77,     0,     0,     0,   196,     0,   197,     0,   196,
   197,     0,    32,   239,    77,     0,   200,     0,     1,   200,
     0,    82,     0,   199,    78,     0,   199,   194,   195,   121,
   192,    78,     0,   199,   194,   195,     1,    78,     0,   199,
   194,   195,   190,    78,     0,   202,   207,     0,   202,     1,
     0,    15,    59,    99,    76,     0,     0,    18,   204,   207,
    17,     0,     0,     0,   205,   206,   210,     0,   205,   206,
   221,   207,     0,   205,   206,   209,     0,   210,     0,   221,
     0,   200,     0,   218,     0,    99,    77,     0,     0,   201,
    16,   211,   207,     0,   201,     0,   201,    16,     1,     0,
     0,     0,    17,   212,    59,    99,    76,   213,   207,     0,
   203,    59,    99,    76,    77,     0,   203,     1,     0,     0,
     0,     0,    19,    59,   223,    77,   214,   223,    77,   215,
   223,    76,   216,   207,     0,     0,    20,    59,    99,    76,
   217,   207,     0,    23,    77,     0,    24,    77,     0,    25,
    77,     0,    25,    99,    77,     0,    27,   222,    59,    99,
    76,    77,     0,    27,   222,    59,    99,    38,   224,    76,
    77,     0,    27,   222,    59,    99,    38,   224,    38,   224,
    76,    77,     0,    27,   222,    59,    99,    38,   224,    38,
   224,    38,   227,    76,    77,     0,    26,    97,    77,     0,
    26,    50,    99,    77,     0,    77,     0,   219,     0,     0,
    19,    59,   113,    76,   220,   207,     0,    21,   107,    38,
     0,    21,   107,    10,   107,    38,     0,    22,    38,     0,
    97,    38,   142,     0,     0,     7,     0,     0,    99,     0,
     0,   225,     0,   226,     0,   225,    81,   226,     0,     9,
    59,    99,    76,     0,   115,     0,   227,    81,   115,     0,
     0,   229,   230,     0,   232,    76,     0,     0,   233,    77,
   231,   230,     0,     1,    76,     0,     0,    10,     0,   233,
     0,   233,    81,    10,     0,   234,     0,   233,    81,   234,
     0,   125,   122,   166,   142,     0,   125,   122,   167,   142,
     0,   125,   122,   186,   142,     0,   129,   122,   167,   142,
     0,   129,   122,   186,   142,     0,     0,   236,   237,     0,
   230,     0,   238,    76,     0,     3,     0,   238,    81,     3,
     0,    97,     0,   239,    81,    97,     0,    31,     0
};

#endif
@@ -393,21 +393,21 @@
  1289,  1291,  1293,  1298,  1300,  1307,  1309,  1312,  1315,  1319,
  1322,  1326,  1329,  1333,  1338,  1340,  1344,  1346,  1348,  1350,
  1354,  1356,  1359,  1362,  1365,  1368,  1372,  1374,  1377,  1379,
  1384,  1387,  1392,  1394,  1396,  1410,  1417,  1422,  1428,  1433,
  1435,  1440,  1442,  1446,  1450,  1454,  1464,  1466,  1471,  1476,
  1479,  1483,  1486,  1490,  1493,  1496,  1499,  1503,  1506,  1510,
  1514,  1516,  1518,  1520,  1522,  1524,  1526,  1528,  1532,  1540,
  1548,  1550,  1552,  1556,  1558,  1561,  1564,  1575,  1577,  1582,
  1584,  1587,  1601,  1604,  1607,  1609,  1611,  1619,  1627,  1638,
  1643,  1646,  1660,  1669,  1673,  1677,  1681,  1687,  1691,  1696,
  1699,  1704,  1707,  1708,  1725,  1730,  1733,  1745,  1747,  1757,
  1767,  1768,  1776,  1779,  1791,  1795,  1812,  1822,  1831,  1836,
  1841,  1846,  1850,  1854,  1865,  1872,  1879,  1886,  1897,  1903,
  1906,  1911,  1934,  1968,  1999,  2030,  2045,  2059,  2063,  2067,
  2070,  2075,  2077,  2080,  2082,  2086,  2091,  2094,  2100,  2105,
  2110,  2112,  2121,  2122,  2128,  2130,  2140,  2142,  2146,  2149,
  2155,  2165,  2174,  2183,  2193,  2207,  2212,  2217,  2219,  2228,
  2231,  2236,  2239,  2243
  1384,  1387,  1392,  1394,  1396,  1410,  1417,  1431,  1437,  1442,
  1444,  1449,  1451,  1455,  1459,  1463,  1473,  1475,  1480,  1485,
  1488,  1492,  1495,  1499,  1502,  1505,  1508,  1512,  1515,  1519,
  1523,  1525,  1527,  1529,  1531,  1533,  1535,  1537,  1541,  1549,
  1557,  1559,  1561,  1565,  1567,  1570,  1573,  1584,  1586,  1591,
  1593,  1596,  1610,  1613,  1616,  1618,  1620,  1628,  1636,  1647,
  1652,  1655,  1669,  1678,  1682,  1686,  1690,  1696,  1700,  1705,
  1708,  1713,  1716,  1717,  1734,  1739,  1742,  1754,  1756,  1766,
  1776,  1777,  1785,  1788,  1800,  1804,  1821,  1831,  1840,  1845,
  1850,  1855,  1859,  1863,  1874,  1881,  1888,  1895,  1906,  1912,
  1915,  1920,  1943,  1977,  2008,  2039,  2054,  2068,  2072,  2076,
  2079,  2084,  2086,  2089,  2091,  2095,  2100,  2103,  2109,  2114,
  2119,  2121,  2130,  2131,  2137,  2139,  2149,  2151,  2155,  2158,
  2164,  2174,  2183,  2192,  2202,  2216,  2221,  2226,  2228,  2237,
  2240,  2245,  2248,  2252
};
#endif

@@ -522,7 +522,7 @@
     3,     3,     4,     4,     3,     3,     1,     1,     2,     1,
     2,     1,     2,     0,     7,     5,     2,     0,     7,     5,
     2,     0,     8,     0,     7,     2,     0,     1,     0,     1,
     1,     2,     0,     3,     2,     3,     1,     3,     1,     1,
     1,     2,     0,     3,     2,     3,     5,     3,     1,     1,
     2,     1,     3,     4,     6,     5,     1,     3,     1,     1,
     3,     2,     2,     0,     1,     1,     2,     0,     2,     3,
     3,     2,     3,     4,     3,     2,     3,     2,     3,     1,
@@ -578,641 +578,643 @@
   380,   297,   299,   293,   295,     0,   174,   176,    86,     0,
   163,   384,   284,   284,   381,   382,     0,   399,     0,     0,
    29,   313,   104,   118,   118,   135,     0,     0,   164,   218,
     0,   266,   272,   326,   268,   170,   170,   281,   278,   170,
     0,     0,     0,   309,   310,     0,    80,    83,   294,   179,
     0,   181,   229,   288,   379,   119,   170,   170,   170,   288,
   119,   170,   170,     0,   388,   390,   401,   314,   111,     0,
   112,     0,   135,   133,   189,   187,   186,   168,    21,     0,
    25,   325,     0,   245,   249,   255,   170,   402,     0,     0,
     0,   325,     0,     0,   115,   326,   301,   311,   202,    86,
     0,     0,   199,     0,   201,     0,   257,   192,   198,     0,
     0,     0,     0,   292,     0,   396,     0,   391,   392,   393,
   292,     0,   394,   395,   383,     0,     0,   162,   134,   137,
   136,     0,   165,   273,     0,   170,   253,   312,     0,   318,
   117,   116,   305,     0,   319,   303,   326,   302,     0,   205,
     0,     0,   196,    61,     0,   191,     0,   204,   195,    81,
   180,   227,   228,   223,     0,   226,     0,   109,   110,     0,
   170,     0,   274,   403,   317,     0,   152,     0,   339,   323,
     0,     0,     0,     0,     0,     0,     0,     0,   368,   360,
     0,     0,   113,   118,   118,   332,   337,     0,     0,   329,
   330,   333,   361,   331,     0,     0,   207,     0,     0,   193,
   194,   224,   225,   188,   276,   170,     0,     0,   325,   370,
     0,     0,   366,   350,   351,   352,     0,     0,     0,   369,
     0,   170,   334,   124,     0,   125,     0,     0,   321,   326,
   320,   343,     0,   126,     0,   200,   197,   275,     0,     0,
     0,   371,    45,     0,     0,     0,   364,   353,     0,   358,
     0,   367,     0,   122,   208,     0,   123,   211,   338,   325,
     0,     0,   206,   322,     0,   324,   362,   344,   348,     0,
   359,     0,   120,     0,   121,     0,   336,   327,   325,     0,
   340,   325,   370,   325,   365,   372,     0,   209,   212,   328,
   342,   325,   363,     0,   349,     0,     0,   373,   374,   354,
     0,     0,   341,   345,     0,   372,     0,     0,   210,   213,
   370,     0,     0,   355,   375,     0,   376,     0,     0,   346,
   377,     0,   356,   325,     0,     0,   347,   357,   378,     0,
     0,     0
     0,   266,   272,   326,   268,   326,   170,   170,   281,   278,
   170,     0,     0,     0,   309,   310,     0,    80,    83,   294,
   179,     0,   181,   229,   288,   379,   119,   170,   170,   170,
   288,   119,   170,   170,     0,   388,   390,   401,   314,   111,
     0,   112,     0,   135,   133,   189,   187,   186,   168,    21,
     0,    25,   325,   170,     0,   245,   249,   255,   170,   402,
     0,     0,     0,   325,     0,     0,   115,   326,   301,   311,
   202,    86,     0,     0,   199,     0,   201,     0,   257,   192,
   198,     0,     0,     0,     0,   292,     0,   396,     0,   391,
   392,   393,   292,     0,   394,   395,   383,     0,     0,   162,
   134,   137,   136,     0,   165,   273,     0,   267,   119,   170,
   253,   312,     0,   318,   117,   116,   305,     0,   319,   303,
   326,   302,     0,   205,     0,     0,   196,    61,     0,   191,
     0,   204,   195,    81,   180,   227,   228,   223,     0,   226,
     0,   109,   110,     0,   170,     0,   274,   403,   317,     0,
   152,     0,   339,   323,     0,     0,     0,     0,     0,     0,
     0,     0,   368,   360,     0,     0,   113,   118,   118,   332,
   337,     0,     0,   329,   330,   333,   361,   331,     0,     0,
   207,     0,     0,   193,   194,   224,   225,   188,   276,   170,
     0,     0,   325,   370,     0,     0,   366,   350,   351,   352,
     0,     0,     0,   369,     0,   170,   334,   124,     0,   125,
     0,     0,   321,   326,   320,   343,     0,   126,     0,   200,
   197,   275,     0,     0,     0,   371,    45,     0,     0,     0,
   364,   353,     0,   358,     0,   367,     0,   122,   208,     0,
   123,   211,   338,   325,     0,     0,   206,   322,     0,   324,
   362,   344,   348,     0,   359,     0,   120,     0,   121,     0,
   336,   327,   325,     0,   340,   325,   370,   325,   365,   372,
     0,   209,   212,   328,   342,   325,   363,     0,   349,     0,
     0,   373,   374,   354,     0,     0,   341,   345,     0,   372,
     0,     0,   210,   213,   370,     0,     0,   355,   375,     0,
   376,     0,     0,   346,   377,     0,   356,   325,     0,     0,
   347,   357,   378,     0,     0,     0
};

static const short yydefgoto[] = {   690,
static const short yydefgoto[] = {   694,
     1,     2,     3,    17,    18,    19,   224,   378,   230,   381,
   112,   308,   454,    85,   144,   276,    87,    88,    89,    90,
    91,   396,    92,   261,   260,   258,   462,   259,    93,   145,
    94,   211,   212,   213,   373,   441,   442,    20,   107,   543,
   297,    57,   374,   424,   298,    23,    98,   186,    24,   129,
   117,    44,   113,   118,   430,    45,   377,   216,   217,    26,
   195,   196,   197,   428,   482,   456,   457,   458,   559,   459,
   502,   460,   461,   614,   634,   661,   617,   636,   662,   202,
   121,   407,   122,    27,    28,    29,    30,   238,   240,   245,
   137,   506,   334,   132,   133,   235,   382,   383,   243,   244,
   100,   184,   101,   103,   185,   443,   444,   494,   214,   337,
   393,   394,   395,   371,   249,   372,   547,   548,   549,   569,
   590,   312,   591,   447,   550,   551,   620,   568,   652,   643,
   671,   684,   644,   552,   553,   642,   554,   581,   604,   657,
   658,   659,   682,   281,   282,   299,   414,   300,   301,   302,
   205,   206,   303,   304,   439,    95
   112,   308,   456,    85,   144,   276,    87,    88,    89,    90,
    91,   397,    92,   261,   260,   258,   464,   259,    93,   145,
    94,   211,   212,   213,   373,   443,   444,    20,   222,   547,
   297,    57,   374,   425,   298,    23,    98,   186,    24,   129,
   117,    44,   113,   118,   431,    45,   377,   216,   217,    26,
   195,   196,   197,   429,   484,   458,   459,   460,   563,   461,
   506,   462,   463,   618,   638,   665,   621,   640,   666,   202,
   121,   408,   122,    27,    28,    29,    30,   238,   240,   245,
   137,   510,   334,   132,   133,   235,   382,   383,   243,   244,
   100,   184,   101,   103,   185,   445,   446,   498,   214,   337,
   394,   395,   396,   371,   249,   372,   551,   552,   553,   573,
   594,   312,   595,   449,   554,   555,   624,   572,   656,   647,
   675,   688,   648,   556,   557,   646,   558,   585,   608,   661,
   662,   663,   686,   281,   282,   299,   415,   300,   301,   302,
   205,   206,   303,   304,   441,    95
};

static const short yypact[] = {    95,
   110,  2206,  2206,   260,-32768,-32768,-32768,-32768,    40,    40,
    40,    57,    59,    89,-32768,-32768,-32768,-32768,-32768,    42,
    99,  2234,    79,-32768,    40,-32768,    87,    93,   108,-32768,
  2206,-32768,-32768,-32768,    40,    40,    40,  2068,  2002,   125,
-32768,-32768,    42,   147,-32768,    40,  1355,-32768,   257,-32768,
    42,    79,-32768,    40,-32768,-32768,   696,-32768,-32768,-32768,
-32768,    76,-32768,   124,-32768,   132,-32768,-32768,-32768,-32768,
-32768,-32768,  2068,  2068,   373,-32768,-32768,-32768,  2068,-32768,
-32768,   721,-32768,-32768,  2068,   149,   153,-32768,  2095,  2122,
-32768,  2335,   881,   231,  2068,-32768,   186,   319,-32768,   203,
   578,   708,   627,   304,-32768,   257,    42,-32768,   194,-32768,
  1430,   438,    40,-32768,-32768,   257,   177,-32768,    40,   276,
   398,   417,   188,  1417,   696,-32768,-32768,-32768,-32768,    40,
-32768,   208,   778,-32768,   214,-32768,   468,-32768,-32768,-32768,
-32768,-32768,   223,   269,   288,   312,-32768,   315,  2068,   721,
-32768,   721,-32768,  2068,  2068,   362,-32768,-32768,  2068,  2068,
  2068,  2068,  2068,  2068,  2068,  2068,  2068,  2068,  2068,  2068,
-32768,-32768,   373,   373,  2068,  2068,-32768,-32768,-32768,-32768,
   319,  1457,    40,-32768,   426,   760,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,    50,-32768,   344,-32768,   417,-32768,
-32768,   385,   417,   419,-32768,   611,  1512,-32768,   349,   361,
-32768,   316,    70,-32768,-32768,   405,    40,   545,   323,-32768,
   257,   257,-32768,   438,    40,-32768,  1539,-32768,-32768,   438,
    40,-32768,-32768,   428,   370,   198,   953,-32768,    40,-32768,
-32768,   413,   383,-32768,   468,-32768,-32768,-32768,   376,   391,
  1891,-32768,  2335,   402,   411,  2335,  2335,  2068,   443,  2068,
  2068,  1564,  1645,  1859,  1078,   747,   838,   838,   356,   356,
-32768,-32768,-32768,-32768,-32768,   432,   153,   412,   463,   485,
-32768,   871,-32768,   434,   319,-32768,  1594,-32768,   760,   445,
   708,  2149,    54,   448,-32768,-32768,-32768,  1036,-32768,   450,
   197,-32768,-32768,    81,-32768,-32768,-32768,    39,-32768,-32768,
-32768,   846,-32768,   398,-32768,-32768,   398,-32768,   483,-32768,
-32768,   452,-32768,-32768,-32768,-32768,-32768,-32768,   461,-32768,
   473,  2068,   373,   480,   383,-32768,   496,-32768,-32768,-32768,
-32768,-32768,   508,  2068,  2258,  1483,-32768,-32768,   426,-32768,
-32768,-32768,   426,-32768,-32768,   493,-32768,-32768,    85,   510,
-32768,-32768,   550,   497,-32768,-32768,  1006,-32768,   585,   288,
-32768,-32768,-32768,   512,   328,-32768,  1291,    39,-32768,-32768,
    39,   513,-32768,-32768,   513,    40,    40,  2335,-32768,    40,
   515,   373,   814,   496,-32768,  1111,-32768,  2351,-32768,-32768,
  2068,-32768,-32768,-32768,   497,    40,   133,   140,    40,-32768,
    40,   140,    40,   871,-32768,-32768,-32768,-32768,-32768,   257,
-32768,    42,-32768,   692,-32768,-32768,  2335,-32768,-32768,  1291,
-32768,-32768,   430,-32768,-32768,-32768,    40,-32768,   220,   433,
   641,   518,   520,   894,-32768,-32768,-32768,-32768,-32768,   563,
   373,  2068,-32768,   564,  2335,   525,   526,-32768,-32768,   326,
  1231,  2068,   146,   500,   550,-32768,  1621,-32768,-32768,-32768,
   423,   497,-32768,-32768,-32768,   237,   250,   112,   692,-32768,
-32768,  1111,-32768,-32768,  2068,    49,-32768,-32768,   373,-32768,
-32768,-32768,-32768,   541,-32768,-32768,-32768,-32768,  1757,-32768,
  2245,  1111,-32768,-32768,  1171,-32768,  1346,-32768,-32768,  2351,
-32768,   504,   504,-32768,  1676,-32768,   537,-32768,-32768,   544,
  1778,  2068,-32768,-32768,-32768,  1837,   588,   570,-32768,-32768,
   572,   576,  2068,   598,   566,   596,  2015,   193,   633,-32768,
   638,   601,-32768,   602,  2238,-32768,   664,   974,    66,-32768,
-32768,-32768,-32768,-32768,  1948,  2068,-32768,   604,  1346,-32768,
-32768,-32768,-32768,-32768,-32768,  1778,  2068,   624,-32768,  2068,
  2068,  1701,-32768,-32768,-32768,-32768,   615,  2068,   616,-32768,
   629,    40,-32768,-32768,   257,-32768,    42,  1054,-32768,-32768,
-32768,-32768,  2068,-32768,  2290,-32768,-32768,-32768,   618,  2068,
   714,-32768,   687,   659,   662,  2068,-32768,-32768,   666,-32768,
  2068,-32768,   271,-32768,   266,   284,-32768,   158,-32768,-32768,
  1837,   663,-32768,-32768,   672,-32768,-32768,-32768,-32768,  2308,
-32768,    24,-32768,   438,-32768,   438,-32768,-32768,-32768,   674,
-32768,-32768,  2068,-32768,-32768,   744,   679,-32768,-32768,-32768,
-32768,-32768,-32768,   681,-32768,   700,    43,   684,-32768,-32768,
   288,   288,-32768,-32768,  2068,   744,   691,   744,-32768,-32768,
  2068,   702,    61,-32768,-32768,   705,-32768,   419,   706,-32768,
   231,   176,-32768,-32768,   709,   419,-32768,-32768,   231,   787,
   789,-32768
static const short yypact[] = {    97,
   106,  2218,  2218,   295,-32768,-32768,-32768,-32768,    47,    47,
    47,    86,    92,    99,-32768,-32768,-32768,-32768,-32768,    98,
    42,  2246,   355,-32768,    47,-32768,    90,   114,   121,-32768,
  2218,-32768,-32768,-32768,    47,    47,    47,  2080,  2014,   119,
-32768,-32768,    98,   116,-32768,    47,  1367,-32768,   331,-32768,
    98,   355,-32768,    47,-32768,-32768,   874,-32768,-32768,-32768,
-32768,   127,-32768,   163,-32768,   166,-32768,-32768,-32768,-32768,
-32768,-32768,  2080,  2080,   396,-32768,-32768,-32768,  2080,-32768,
-32768,  1066,-32768,-32768,  2080,   125,   182,-32768,  2107,  2134,
-32768,  2347,   783,   260,  2080,-32768,   212,   222,-32768,   229,
  1665,   689,   495,   288,-32768,   331,    98,-32768,   252,-32768,
  1442,   309,    47,-32768,-32768,   331,   174,-32768,    47,   889,
   349,   382,   189,  1429,   874,-32768,-32768,-32768,-32768,    47,
-32768,   247,   201,-32768,   287,-32768,   410,-32768,-32768,-32768,
-32768,-32768,   263,   339,   338,   346,-32768,   347,  2080,  1066,
-32768,  1066,-32768,  2080,  2080,   388,-32768,-32768,  2080,  2080,
  2080,  2080,  2080,  2080,  2080,  2080,  2080,  2080,  2080,  2080,
-32768,-32768,   396,   396,  2080,  2080,-32768,-32768,-32768,-32768,
   222,  1469,    47,-32768,   387,   517,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,    10,-32768,   369,-32768,   382,-32768,
-32768,   403,   382,   435,-32768,   855,  1524,-32768,   367,   376,
-32768,   677,    71,-32768,-32768,   421,    47,   294,   290,-32768,
   331,   331,-32768,   309,    47,-32768,  1551,-32768,-32768,   309,
    47,-32768,-32768,-32768,   385,   469,  1314,-32768,    47,-32768,
-32768,   423,   383,-32768,   410,-32768,-32768,-32768,   390,   404,
  1903,-32768,  2347,   417,   428,  2347,  2347,  2080,   481,  2080,
  2080,  1576,  1657,   949,   861,  1372,   658,   658,   384,   384,
-32768,-32768,-32768,-32768,-32768,   445,   182,   449,   373,   342,
-32768,  1137,-32768,   452,   222,-32768,  1606,-32768,   517,   458,
   689,  2161,    66,   462,-32768,-32768,-32768,   773,-32768,   463,
   203,-32768,-32768,    56,-32768,-32768,-32768,    61,-32768,-32768,
-32768,   482,-32768,   349,-32768,-32768,   349,-32768,   430,-32768,
-32768,   457,-32768,-32768,-32768,-32768,-32768,-32768,   450,-32768,
   471,  2080,   396,   473,   383,-32768,   523,-32768,-32768,-32768,
-32768,-32768,   518,  2080,  2270,  1495,-32768,-32768,   387,-32768,
-32768,-32768,   387,-32768,-32768,   475,-32768,-32768,   136,   484,
-32768,-32768,   327,    96,-32768,-32768,   744,-32768,   558,   338,
-32768,-32768,-32768,   485,   576,-32768,  1303,    61,-32768,-32768,
    61,   483,-32768,-32768,   483,-32768,    47,    47,  2347,-32768,
    47,   493,   396,   712,   523,-32768,  1123,-32768,  2363,-32768,
-32768,  2080,-32768,-32768,-32768,    96,    47,   181,   214,    47,
-32768,    47,   214,    47,  1137,-32768,-32768,-32768,-32768,-32768,
   331,-32768,    98,-32768,   653,-32768,-32768,  2347,-32768,-32768,
  1303,-32768,-32768,   413,   413,-32768,-32768,-32768,    47,-32768,
   226,   407,   621,   494,   496,   796,-32768,-32768,-32768,-32768,
-32768,   537,   396,  2080,-32768,   540,  2347,   501,   503,-32768,
-32768,   217,  1243,  2080,   147,   325,   327,-32768,  1633,-32768,
-32768,-32768,   333,    96,-32768,-32768,-32768,   231,   261,   159,
   653,-32768,-32768,  1123,-32768,-32768,  2080,-32768,   117,    58,
-32768,-32768,   396,-32768,-32768,-32768,-32768,   507,-32768,-32768,
-32768,-32768,  1769,-32768,  2257,  1123,-32768,-32768,  1183,-32768,
  1358,-32768,-32768,  2363,-32768,   440,   440,-32768,  1688,-32768,
   508,-32768,-32768,   514,  1790,  2080,-32768,-32768,-32768,  1849,
   548,   535,-32768,-32768,   538,   539,  2080,   561,   519,   525,
  2027,   184,   596,-32768,   569,   531,-32768,   546,  2250,-32768,
   640,   925,    82,-32768,-32768,-32768,-32768,-32768,  1960,  2080,
-32768,   579,  1358,-32768,-32768,-32768,-32768,-32768,-32768,  1790,
  2080,   603,-32768,  2080,  2080,  1713,-32768,-32768,-32768,-32768,
   586,  2080,   591,-32768,   613,    47,-32768,-32768,   331,-32768,
    98,  1009,-32768,-32768,-32768,-32768,  2080,-32768,  2302,-32768,
-32768,-32768,   597,  2080,   657,-32768,   932,   600,   609,  2080,
-32768,-32768,   602,-32768,  2080,-32768,   293,-32768,   100,   301,
-32768,   431,-32768,-32768,  1849,   610,-32768,-32768,   612,-32768,
-32768,-32768,-32768,  2320,-32768,    83,-32768,   309,-32768,   309,
-32768,-32768,-32768,   620,-32768,-32768,  2080,-32768,-32768,   693,
   627,-32768,-32768,-32768,-32768,-32768,-32768,   637,-32768,   663,
   123,   647,-32768,-32768,   338,   338,-32768,-32768,  2080,   693,
   667,   693,-32768,-32768,  2080,   671,   160,-32768,-32768,   687,
-32768,   435,   676,-32768,   260,   219,-32768,-32768,   688,   435,
-32768,-32768,   260,   764,   768,-32768
};

static const short yypgoto[] = {-32768,
-32768,-32768,-32768,   103,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,   -24,-32768,   -38,   516,  -110,   477,-32768,-32768,
   -21,-32768,   255,-32768,-32768,-32768,-32768,-32768,   232,-32768,
  -194,  -199,   591,-32768,-32768,   363,-32768,    -3,   -60,   252,
    10,   757,-32768,   389,    19,   -14,   -90,   635,    27,  -169,
  -390,   -49,  -114,   -68,-32768,-32768,-32768,  -171,    26,    68,
-32768,   522,-32768,   386,-32768,  -347,-32768,   325,-32768,  -405,
-32768,-32768,   406,-32768,-32768,-32768,-32768,-32768,-32768,   -42,
   -77,   105,    -9,-32768,-32768,-32768,   -43,-32768,-32768,-32768,
-32768,-32768,   511,   -37,-32768,   612,   538,   435,   625,   546,
   -35,   -92,   -72,   -91,  -105,   429,-32768,-32768,  -185,-32768,
-32768,-32768,   486,    16,-32768,  -125,-32768,-32768,-32768,-32768,
   -57,  -361,  -461,   456,-32768,   261,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,   283,-32768,  -503,   226,
-32768,   238,-32768,   621,-32768,  -250,-32768,-32768,-32768,   543,
  -193,-32768,-32768,-32768,-32768,    13
-32768,-32768,-32768,    77,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,   -24,-32768,   -38,   477,  -126,   426,-32768,-32768,
   -45,-32768,   451,-32768,-32768,-32768,-32768,-32768,   196,-32768,
  -177,  -186,   560,-32768,-32768,   332,-32768,    20,     0,   216,
     8,   728,-32768,   358,    17,    -6,   -69,   595,    21,  -154,
  -398,   -34,  -102,   -47,-32768,-32768,-32768,  -149,     4,    33,
-32768,   497,-32768,   359,-32768,  -392,-32768,   284,-32768,  -396,
-32768,-32768,   334,-32768,-32768,-32768,-32768,-32768,-32768,   -37,
   -42,    60,   -18,-32768,-32768,-32768,   -21,-32768,-32768,-32768,
-32768,-32768,   467,    -7,-32768,   571,   479,   365,   564,   491,
   -19,   -70,   -62,   -85,  -115,   366,-32768,-32768,  -147,-32768,
-32768,-32768,   436,  -151,-32768,  -124,-32768,-32768,-32768,-32768,
   -90,  -332,  -464,   380,-32768,   187,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,   207,-32768,  -563,   164,
-32768,   161,-32768,   549,-32768,  -225,-32768,-32768,-32768,   480,
  -181,-32768,-32768,-32768,-32768,     6
};


#define	YYLAST		2403
#define	YYLAST		2415


static const short yytable[] = {    86,
    97,   123,    62,    64,    66,   225,   120,    52,   190,   293,
    47,    21,    21,   131,    31,    31,   288,    49,    51,   250,
    22,    22,   433,   218,   318,   135,   309,    25,    25,   476,
   323,   351,   320,   104,    35,    36,    37,   201,   219,   370,
    21,   124,   234,    31,    41,    46,   146,    54,    53,    22,
   141,   139,   140,   319,   215,   509,    25,   142,   222,   324,
   236,   646,   177,   147,   277,    99,   592,   330,    46,    14,
  -102,    14,   209,   178,   119,   280,    46,   194,    14,   310,
   666,   131,   130,    55,   499,    56,   522,   225,   279,    59,
    60,    42,    58,   199,    -1,    59,    60,   203,   678,   647,
    43,   561,    58,    58,    58,    32,   104,   601,    99,    -2,
    59,    60,   242,    58,   254,    38,   255,    39,   667,   288,
   248,    58,   285,   183,   593,   290,   183,   189,    46,   361,
   291,   119,    46,    67,   520,   526,   679,   278,   109,   654,
   314,   119,   131,   284,   317,   237,   234,    40,   274,   275,
   130,  -102,   316,   597,   558,   215,   368,   134,   637,    99,
   400,   369,    14,   475,   236,   401,   215,   676,    61,    14,
   110,   111,   215,   349,    63,    48,    99,   650,    99,   353,
   653,   277,   655,   102,   109,   142,    58,  -162,   322,    65,
   663,   466,   467,  -162,   613,    59,    60,    58,   110,   111,
   329,     5,   331,     7,   188,   136,   183,   445,   199,     9,
    10,    11,   203,   138,   434,   435,   110,   111,   436,   343,
   242,   511,   687,   105,   148,    13,   149,   106,   621,   340,
   325,    25,   327,   149,  -162,   468,   469,   470,  -162,   177,
   473,   474,   578,   119,   418,   131,   119,   119,   356,   237,
    58,   685,   204,   220,   481,   491,   686,   221,   496,    41,
   114,   179,   189,    99,   228,   487,   194,   384,   106,   384,
   409,   413,   514,   366,  -269,  -269,   223,   367,   187,   -19,
   -19,   -19,   -19,    52,    58,   231,    14,   -19,   -19,   -19,
   463,   239,   109,   363,   364,  -162,   488,   375,   246,   280,
   489,  -162,   109,   -19,   183,  -162,   115,    25,   242,   481,
   183,  -162,   464,   518,   523,   116,   210,   221,   471,  -105,
  -105,  -105,  -105,    54,    53,  -105,   519,  -105,  -105,  -105,
   106,     5,    55,     7,    56,   446,    33,    34,   376,     9,
    10,    11,  -162,  -105,   247,   465,  -162,   633,    14,   565,
   472,   221,  -162,   408,   412,    13,  -162,   -19,   349,   353,
   635,   507,   110,   111,   106,   349,   353,   438,   180,   248,
   420,   422,   477,   546,   384,    59,    60,   181,   182,   200,
   131,   226,   227,   451,   446,   452,   497,   251,   406,   411,
   486,   252,    25,   429,   598,   104,   431,  -105,   315,   -82,
   546,   423,   292,   253,   421,   168,   169,   170,   256,   257,
   612,   109,   478,   262,   263,   264,   265,   266,   267,   268,
   269,   270,   271,   272,   273,    41,   500,    70,   517,   198,
   411,   306,    41,   114,   648,   131,   649,   307,   210,    25,
   313,  -325,  -325,  -325,  -325,   119,   326,    46,   332,  -325,
  -325,  -325,    14,   336,   199,   203,   226,   227,   119,    14,
   542,   199,   203,   333,   524,  -325,   338,   485,   241,   198,
    59,    60,   410,    58,   541,   110,   111,   341,    58,   115,
   344,   405,   182,   681,   286,   287,   342,   542,   116,   406,
   406,   689,    14,   142,   348,   546,   411,   411,   577,    41,
   225,   541,    41,   403,  -267,  -267,   198,   347,   544,   307,
   490,   555,   180,   579,   345,   346,   352,   545,   379,  -101,
   357,   181,   182,   362,    25,   365,    14,   392,   599,    14,
    52,   602,   605,   178,   380,   669,   670,   616,   386,   609,
   585,   587,   615,   286,   287,   397,   410,    41,   114,   404,
   387,   198,    41,   403,   622,   405,   182,   390,   405,   182,
   350,   625,   466,   467,   544,   151,   153,   555,   512,   513,
    54,    53,   632,   545,    14,   399,   215,   618,   215,    14,
    25,     5,   542,     7,   188,   402,   388,   417,   419,     9,
    10,    11,   437,   432,   115,  -304,   541,   495,   398,   404,
   -31,   503,   504,   116,   602,    13,   505,    14,   405,   182,
   119,   294,    46,   295,     5,     6,     7,     8,   525,   563,
   296,   564,     9,    10,    11,   -32,   672,   180,   567,    41,
   570,   427,   602,   198,   571,   573,   181,   182,    13,   580,
    14,   210,   574,  -114,  -114,  -114,  -114,  -114,  -114,  -114,
   455,  -114,  -114,  -114,  -114,  -114,    14,  -114,  -114,  -114,
    97,    47,    62,    64,    66,    25,    25,    31,    31,    21,
    21,   120,    35,    36,    37,    52,   123,   225,    22,    22,
   250,   215,   478,    46,   104,    54,   293,   139,   140,   218,
   190,   288,   124,   142,    25,   131,    31,   318,    21,   147,
    49,    51,    53,   323,   320,   107,    46,    22,   277,   178,
   141,   434,   119,   435,    46,   135,   351,    58,   201,    99,
   130,   370,   146,   234,   309,   280,   513,    58,    58,    58,
   236,  -102,   209,   219,   177,   319,    14,   194,    58,    32,
   310,   324,   596,   658,   199,   290,    58,    14,   203,   330,
   291,   524,    59,    60,   279,   526,    -1,   104,    41,   225,
    41,   183,    99,   131,   183,    -2,    46,    67,   605,   119,
    46,   680,   242,   562,   565,   503,    59,    60,    48,   119,
   650,   189,   215,    59,    60,    14,   109,    14,   130,  -162,
   254,   368,   255,   215,   288,  -162,   369,   278,   237,   215,
   597,   361,   248,   284,    38,   411,    14,    42,   274,   275,
    39,    58,  -102,    99,   406,   182,    43,    40,   651,   641,
   670,   142,    58,   349,   131,   277,   601,   234,   530,   353,
    99,    61,    99,   316,   236,   314,  -162,   102,   654,   317,
  -162,   657,   285,   659,   183,   109,    59,    60,   322,   477,
   617,   667,   105,  -171,  -171,    63,   106,   682,   671,   199,
   148,   232,    65,   203,     5,   340,     7,    96,   134,    25,
    14,   401,     9,    10,    11,    58,   402,   110,   111,   343,
   242,   119,   515,   691,   119,   119,   430,   149,    13,   432,
   329,    15,   331,   582,   384,   683,   386,   436,   437,   468,
   469,   438,   237,    14,   136,   419,   447,   138,   356,    58,
   220,    14,   511,   325,   221,   327,   189,    99,   470,   471,
   472,   625,   149,   475,   476,   228,   194,   131,   177,   106,
   483,   180,   110,   111,   453,   465,   454,   233,  -261,   366,
   181,   182,   183,   367,   488,    25,   518,   179,   183,   491,
   280,    52,   410,   414,   689,   495,    41,   114,   500,   690,
   198,    54,   492,   448,   187,   375,   493,   522,   242,   210,
   204,   221,  -325,  -325,  -325,  -325,   363,   364,    53,   466,
  -325,  -325,  -325,    14,   231,   473,   483,    41,   404,    41,
   404,   198,   376,    41,   114,    41,  -325,   523,   246,   198,
   527,   106,   386,   115,   409,   413,   110,   111,   226,   227,
   349,   353,   116,   448,    14,   501,    14,   349,   353,    55,
    14,    56,    14,   200,   239,   315,   407,   412,   440,   637,
    25,    33,    34,   221,   405,   569,   405,   639,   550,   198,
   115,   106,   411,   406,   182,   406,   182,   104,   479,   116,
  -101,   406,   182,   421,   423,   424,   490,   490,    59,    60,
   286,   287,    14,   131,   480,   550,   467,   226,   227,   412,
   241,   474,    59,    60,   247,    41,   114,   350,    25,   248,
   602,   251,   180,   252,   119,   -82,    46,   292,   504,   109,
   521,   181,   182,   168,   169,   170,   616,   489,   119,    58,
   110,   111,    14,    70,    58,   286,   287,   199,   203,   306,
   487,   652,   307,   653,   199,   203,   313,   109,   332,   131,
  -162,   326,   115,   333,   546,   379,  -162,   336,   528,   407,
   407,   116,     5,   142,     7,   188,   412,   412,   545,   338,
     9,    10,    11,   307,   494,     5,     6,     7,     8,   110,
   111,   546,   341,     9,    10,    11,    13,    41,   468,   469,
   550,   198,   581,   342,   685,   545,    25,  -162,   559,    13,
   548,  -162,   693,   178,   151,   153,   225,   583,   344,   549,
   347,    58,   127,   128,    14,   516,   517,   387,     9,    10,
    11,   348,   603,   357,   352,   606,   609,   362,   365,   380,
   673,   674,    52,   613,    42,  -269,  -269,   215,   388,   215,
   391,   619,    54,    43,   393,   398,   620,   400,   626,   403,
   418,   420,    25,   433,   559,   629,   548,   589,   591,    53,
   439,  -304,   622,   499,   -31,   549,   636,   507,   508,     5,
    55,     7,    56,   509,   529,   -32,   546,     9,    10,    11,
   567,   568,   119,   571,    46,   578,   574,   575,   577,   253,
   545,   579,   584,    13,   256,   257,   586,   587,   606,   262,
   263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
   273,   210,   588,  -114,  -114,  -114,  -114,  -114,  -114,  -114,
   676,  -114,  -114,  -114,  -114,  -114,   606,  -114,  -114,  -114,
  -114,  -114,  -114,  -114,  -114,  -114,  -114,  -114,  -114,  -114,
  -114,  -114,   575,  -114,  -114,   582,    42,   583,   584,   588,
  -114,   596,   600,  -114,   427,    43,  -385,   611,  -114,  -114,
  -114,   608,   610,   624,  -114,  -114,   480,   127,   128,  -114,
   126,   127,   128,     9,    10,    11,   501,     9,    10,    11,
    59,    60,   191,   192,   193,   455,   510,  -114,  -114,  -114,
  -114,   143,  -114,    68,     5,    14,     7,    96,    69,    70,
   626,    71,     9,    10,    11,   628,   455,   629,   640,   521,
   171,   172,   631,   173,   174,   175,   176,   641,    13,    72,
   651,    15,   656,    73,    74,   660,   455,   664,   665,   455,
    75,   455,   627,    76,   668,   127,   128,   674,    77,    78,
    79,     9,    10,    11,    80,    81,   566,   677,   232,    82,
   680,     5,   683,     7,    96,   688,   691,   572,   692,     9,
    10,    11,   164,   165,   166,   167,   168,   169,   170,    83,
    84,   603,   -91,   311,   492,    13,   594,   360,    15,   125,
   595,   479,   358,   455,   440,   483,  -325,  -325,  -325,  -325,
  -325,  -325,  -325,   289,  -325,  -325,  -325,  -325,  -325,   560,
  -114,  -114,   422,  -114,  -114,   592,   600,   482,   127,   128,
  -114,   604,   612,  -114,     9,    10,    11,   614,  -114,  -114,
  -114,   615,   628,   630,  -114,  -114,   632,   210,   635,  -114,
  -105,  -105,  -105,  -105,   633,   644,  -105,   645,  -105,  -105,
  -105,    59,    60,   191,   192,   193,   655,  -114,  -114,  -114,
  -114,   660,  -114,   664,  -105,   166,   167,   168,   169,   170,
   345,   346,   442,   668,  -325,  -325,  -325,  -325,  -325,  -325,
  -325,   669,  -325,  -325,  -325,  -325,  -325,   672,  -325,  -325,
  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
  -325,  -325,  -325,  -325,  -325,   391,  -325,  -325,   328,     5,
     6,     7,     8,  -325,   233,  -261,  -325,     9,    10,    11,
   630,  -325,  -325,  -325,   385,   508,   484,  -325,  -325,   335,
   493,   294,  -325,    13,     5,     6,     7,     8,   389,   448,
   296,   638,     9,    10,    11,   166,   167,   168,   169,   170,
  -325,   673,  -325,  -325,   210,  -325,  -325,  -325,    13,   498,
    14,  -325,  -325,   639,  -325,   675,   354,     0,  -325,   416,
  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
  -325,     0,  -325,     0,  -325,     0,  -325,  -325,     0,     0,
     0,     0,     0,  -325,   171,   172,  -325,   173,   174,   175,
   176,  -325,  -325,  -325,     0,     0,  -385,  -325,  -325,     0,
     0,     0,  -325,   232,     0,     0,     5,     0,     7,    96,
     0,     0,     0,     0,     9,    10,    11,     0,     0,     0,
  -325,  -300,  -325,  -325,   589,  -325,  -325,  -325,     0,     0,
    13,  -325,  -325,    15,  -325,     0,     0,     0,  -325,     0,
  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
  -325,     0,  -325,     0,  -325,     0,  -325,  -325,     0,     5,
     6,     7,     8,  -325,     0,   415,  -325,     9,    10,    11,
     0,  -325,  -325,  -325,     0,     0,     0,  -325,  -325,     0,
     0,     0,  -325,    13,     0,    14,     0,     0,     0,     5,
     6,     7,     8,     0,     0,     0,     0,     9,    10,    11,
  -325,     0,  -325,  -325,   619,  -325,  -335,  -335,     0,     0,
     0,  -335,  -335,    13,  -335,    14,     0,     0,  -335,     0,
  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,
  -335,     0,  -335,     0,  -335,     0,  -335,  -335,     0,     0,
     0,     0,     0,  -335,     0,     0,  -335,     0,     0,     0,
     0,  -335,  -335,  -335,     0,     0,     0,  -335,  -335,     0,
     0,   449,  -335,   450,    60,     0,     0,     0,    69,    70,
     0,    71,   163,   164,   165,   166,   167,   168,   169,   170,
  -335,     0,  -335,  -335,     0,  -335,     0,     0,     0,    72,
     0,    15,     0,    73,    74,     0,     0,     0,     0,     0,
    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
    79,     0,     0,     0,    80,    81,     0,     0,   451,    82,
   452,   449,     0,   450,    60,     0,     0,     0,    69,    70,
     0,    71,     0,     0,     0,     0,     0,     0,  -190,    83,
    84,     0,   453,     0,     0,     0,     0,     0,     0,    72,
     0,    15,     0,    73,    74,     0,     0,     0,     0,     0,
    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
    79,     0,     0,     0,    80,    81,     0,     0,   451,    82,
   452,   449,     0,    68,     0,     0,     0,     0,    69,    70,
     0,    71,     0,     0,     0,     0,     0,     0,  -258,    83,
    84,     0,   453,     0,     0,     0,     0,     0,     0,    72,
     0,    15,     0,    73,    74,     0,  -203,     0,     0,     0,
    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
    79,     0,     0,     0,    80,    81,     0,     0,  -203,    82,
  -203,   425,     0,    68,     0,     0,     0,     0,    69,    70,
     0,    71,     0,     0,     0,     0,     0,     0,     0,    83,
    84,     0,   453,     0,     0,     0,     0,     0,     0,    72,
     0,    15,     0,    73,    74,     0,     0,     0,     0,     0,
    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
    79,     0,     0,     0,    80,    81,   449,     0,    68,    82,
     0,     0,     0,    69,    70,   108,    71,     0,   -27,   -27,
   -27,   -27,     0,     0,     0,     0,   -27,   -27,   -27,    83,
    84,     0,   426,     0,    72,     0,    15,     0,    73,    74,
     0,   109,   -27,     0,  -162,    75,     0,     0,    76,     0,
  -162,     0,     0,    77,    78,    79,     0,     0,     0,    80,
    81,     0,     0,     0,    82,     0,     0,     0,     0,     0,
     0,     0,     0,   110,   111,     0,     0,   229,     0,     0,
   -23,   -23,   -23,   -23,    83,    84,     0,   453,   -23,   -23,
   -23,  -162,    68,     0,     0,  -162,   -27,    69,    70,     0,
    71,     0,     0,   109,   -23,     0,  -162,     0,     0,     0,
     0,     0,  -162,     0,     0,     0,     0,     0,    72,    68,
    15,     0,    73,    74,    69,    70,     0,    71,     0,    75,
     0,     0,    76,     0,     0,   110,   111,    77,    78,   207,
     0,     0,     0,    80,    81,    72,     0,    15,    82,    73,
    74,     0,     0,  -162,     0,     0,    75,  -162,   -23,    76,
     0,     0,     0,     0,    77,    78,    79,     0,    83,    84,
    80,    81,   208,     0,    68,    82,     0,     0,     0,    69,
    70,     0,    71,   159,   160,   161,   162,   163,   164,   165,
   166,   167,   168,   169,   170,    83,    84,     0,     0,   283,
  -325,  -325,  -325,   678,  -325,  -325,   681,     5,     6,     7,
     8,  -325,   687,   416,  -325,     9,    10,    11,  -105,  -325,
  -325,  -325,   684,   695,   692,  -325,  -325,   696,   360,   607,
  -325,    13,   311,    14,   598,   496,     5,     6,     7,     8,
   125,   481,   389,   289,     9,    10,    11,   358,  -325,   485,
  -325,  -325,   564,  -325,   399,   512,   210,   486,  -325,  -325,
    13,   392,    14,  -325,  -325,   385,  -325,   328,   335,   497,
  -325,   642,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
  -325,  -325,  -325,   390,  -325,   502,  -325,   428,  -325,  -325,
   450,   643,   679,   677,   354,  -325,   171,   172,  -325,   173,
   174,   175,   176,  -325,  -325,  -325,   417,   457,     0,  -325,
  -325,     0,     0,     0,  -325,   294,     0,   295,     5,     6,
     7,     8,     0,     0,   296,     0,     9,    10,    11,     0,
     0,     0,  -325,  -300,  -325,  -325,     0,  -325,   126,   127,
   128,   428,    13,     0,    14,     9,    10,    11,     0,   223,
     0,     0,   -19,   -19,   -19,   -19,     0,     0,     0,     0,
   -19,   -19,   -19,    14,   505,   163,   164,   165,   166,   167,
   168,   169,   170,   457,   514,   109,   -19,     0,  -162,     0,
     0,     0,     0,     0,  -162,   593,     0,  -325,  -325,     0,
  -385,     0,  -325,  -325,   457,  -325,     0,   525,     0,  -325,
     0,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
  -325,  -325,     0,  -325,     0,  -325,   457,  -325,  -325,   457,
     0,   457,     0,     0,  -325,  -162,     0,  -325,     0,  -162,
   -19,     0,  -325,  -325,  -325,     0,   570,     0,  -325,  -325,
     0,     0,     0,  -325,     0,   171,   172,   576,   173,   174,
   175,   176,   162,   163,   164,   165,   166,   167,   168,   169,
   170,  -325,     0,  -325,  -325,     0,  -325,   631,     0,   623,
   599,  -335,  -335,   457,     0,     0,  -335,  -335,     0,  -335,
     0,     0,     0,  -335,     0,  -335,  -335,  -335,  -335,  -335,
  -335,  -335,  -335,  -335,  -335,  -335,     0,  -335,     0,  -335,
     0,  -335,  -335,     0,     0,     0,     0,     0,  -335,     0,
     0,  -335,     0,     0,     0,     0,  -335,  -335,  -335,     0,
   634,     0,  -335,  -335,     0,     0,   143,  -335,    68,     5,
     0,     7,    96,    69,    70,     0,    71,     9,    10,    11,
     0,     0,     0,     0,     0,  -335,     0,  -335,  -335,     0,
  -335,     0,     0,    13,    72,     0,    15,     0,    73,    74,
     0,     0,     0,     0,     0,    75,     0,     0,    76,     0,
     0,     0,     0,    77,    78,    79,     0,     0,     0,    80,
    81,     0,     0,   451,    82,   452,    60,     0,     0,     0,
    69,    70,     0,    71,     0,     0,     0,   294,     0,     0,
     5,     6,     7,     8,    83,    84,   296,   -91,     9,    10,
    11,    72,     0,    15,     0,    73,    74,     0,     0,     0,
     0,     0,    75,     0,    13,    76,    14,     0,     0,     0,
    77,    78,    79,     0,     0,     0,    80,    81,     0,     0,
   453,    82,   454,   451,     0,   452,    60,     0,     0,     0,
    69,    70,     0,    71,     0,     0,     0,     0,     0,     0,
  -190,    83,    84,     0,   455,     0,     0,     0,     0,     0,
     0,    72,  -385,    15,     0,    73,    74,     0,     0,     0,
     0,     0,    75,     0,     0,    76,     0,     0,     0,     0,
    77,    78,    79,     0,     0,     0,    80,    81,     0,     0,
   453,    82,   454,   451,     0,    68,     0,     0,     0,     0,
    69,    70,     0,    71,     0,     0,     0,     0,     0,     0,
  -258,    83,    84,     0,   455,     0,     0,     0,     0,     0,
     0,    72,     0,    15,     0,    73,    74,     0,  -203,     0,
     0,     0,    75,     0,     0,    76,     0,     0,     0,     0,
    77,    78,    79,     0,     0,     0,    80,    81,     0,     0,
  -203,    82,  -203,   426,     0,    68,     0,     0,     0,     0,
    69,    70,     0,    71,   232,     0,     0,     5,     0,     7,
    96,    83,    84,     0,   455,     9,    10,    11,     0,     0,
     0,    72,     0,    15,     0,    73,    74,     0,     0,     0,
     0,    13,    75,     0,    15,    76,     0,     0,     0,     0,
    77,    78,    79,     0,     0,     0,    80,    81,   451,     0,
    68,    82,     0,     0,     0,    69,    70,   108,    71,     0,
   -27,   -27,   -27,   -27,     0,     0,     0,     0,   -27,   -27,
   -27,    83,    84,     0,   427,     0,    72,     0,    15,     0,
    73,    74,     0,   109,   -27,     0,  -162,    75,     0,     0,
    76,     0,  -162,     0,     0,    77,    78,    79,     0,     0,
     0,    80,    81,     0,     0,     0,    82,   164,   165,   166,
   167,   168,   169,   170,     0,   110,   111,     0,     0,   229,
     0,     0,   -23,   -23,   -23,   -23,    83,    84,     0,   455,
   -23,   -23,   -23,  -162,    68,     0,     0,  -162,   -27,    69,
    70,     0,    71,     0,     0,   109,   -23,     0,  -162,     0,
     0,     0,     0,     0,  -162,     0,     0,     0,     0,     0,
    72,    68,    15,     0,    73,    74,    69,    70,     0,    71,
     0,    75,     0,     0,    76,     0,     0,     0,     0,    77,
    78,    79,     0,     0,     0,    80,    81,    72,     0,    15,
    82,    73,    74,     0,     0,     0,     0,     0,    75,     0,
     0,    76,     0,     0,     0,     0,    77,    78,    79,     0,
    83,    84,    80,    81,   305,     0,    68,    82,     0,     0,
     0,    69,    70,     0,    71,   160,   161,   162,   163,   164,
   165,   166,   167,   168,   169,   170,     0,    83,    84,     0,
     0,   321,    72,    68,    15,     0,    73,    74,    69,    70,
     0,    75,     0,     0,    76,     0,     0,   110,   111,    77,
    78,   207,     0,     0,     0,    80,    81,    72,     0,    15,
    82,    73,    74,     0,     0,  -162,     0,     0,    75,  -162,
   -23,    76,     0,     0,     0,     0,    77,    78,    79,     0,
    83,    84,    80,    81,   208,     0,    68,    82,     0,     0,
     0,    69,    70,     0,    71,   159,   160,   161,   162,   163,
   164,   165,   166,   167,   168,   169,   170,    83,    84,     0,
     0,   283,    72,    68,    15,     0,    73,    74,    69,    70,
     0,    71,     0,    75,     0,     0,    76,     0,     0,     0,
     0,    77,    78,    79,     0,     0,     0,    80,    81,    72,
     0,    15,    82,    73,    74,     0,     0,     0,     0,     0,
    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
   515,     0,    83,    84,    80,    81,   355,     0,    68,    82,
     0,     0,     0,    69,    70,     0,    71,   161,   162,   163,
   164,   165,   166,   167,   168,   169,   170,     0,     0,    83,
    84,     0,     0,   516,    72,     0,    15,     0,    73,    74,
   606,     0,     0,     0,     0,    75,     0,     0,    76,     0,
    79,     0,    83,    84,    80,    81,   305,     0,    68,    82,
     0,     0,     0,    69,    70,     0,    71,   160,   161,   162,
   163,   164,   165,   166,   167,   168,   169,   170,     0,    83,
    84,     0,     0,   321,    72,    68,    15,     0,    73,    74,
    69,    70,     0,    71,     0,    75,     0,     0,    76,     0,
     0,     0,     0,    77,    78,    79,     0,     0,     0,    80,
    81,     0,     0,     0,    82,   154,   155,   156,   607,   157,
   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
   168,   169,   170,     0,    83,    84,     0,     0,   562,   450,
   527,     6,     7,     8,    69,    70,     0,    71,     9,    10,
    11,   528,     0,   529,   530,   531,   532,   533,   534,   535,
   536,   537,   538,   539,    13,    72,    14,    15,     0,    73,
    74,     0,     0,     0,     0,     0,    75,     0,     0,    76,
     0,     0,     0,     0,    77,    78,    79,    14,     0,     0,
    80,    81,   154,   155,   156,    82,   157,   158,   159,   160,
   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
     0,     0,     0,   540,     0,    83,    84,     0,   248,   450,
    60,     0,     0,     0,    69,    70,     0,    71,     0,     0,
     0,   528,     0,   529,   530,   531,   532,   533,   534,   535,
   536,   537,   538,   539,     0,    72,     0,    15,     0,    73,
    74,     0,     0,     0,     0,     0,    75,     0,     0,    76,
     0,     0,     0,     0,    77,    78,    79,     0,     0,     0,
    80,    81,     0,    68,     0,    82,     0,     0,    69,    70,
     0,    71,   162,   163,   164,   165,   166,   167,   168,   169,
   170,     0,     0,   540,     0,    83,    84,     0,   248,    72,
     0,    15,     0,    73,    74,     0,     0,     0,     0,     0,
    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
    79,     0,     0,     0,    80,    81,     0,     0,     0,    82,
    68,     5,     6,     7,     8,    69,    70,     0,    71,     9,
    10,    11,     0,     0,     0,     0,     0,     0,     0,    83,
    84,     0,   339,     0,     0,    13,    72,    14,    15,     0,
    73,    74,     0,     0,     0,     0,     0,    75,     0,     0,
    76,     0,     0,     0,     0,    77,    78,    79,     0,     0,
     0,    80,    81,     0,    68,     5,    82,     7,    96,    69,
    70,     0,    71,     9,    10,    11,     0,    68,     0,     0,
     0,     0,    69,    70,     0,    71,    83,    84,     0,    13,
    72,     0,    15,     0,    73,    74,     0,     0,     0,     0,
     0,    75,     0,    72,    76,    15,     0,    73,    74,    77,
    78,    79,     0,     0,    75,    80,    81,    76,     0,     0,
    82,     0,    77,    78,    79,     0,     0,     0,    80,    81,
    68,     0,     0,    82,     0,    69,    70,     0,    71,     0,
    83,    84,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   576,     0,    83,    84,     0,    72,    68,    15,     0,
    73,    74,    69,    70,     0,    71,     0,    75,     0,     0,
    81,    72,     0,    15,    82,    73,    74,     0,     5,     0,
     7,   188,    75,     0,     0,    76,     9,    10,    11,     0,
    77,    78,   519,     0,    83,    84,    80,    81,   355,     0,
    68,    82,    13,     0,    14,    69,    70,     0,    71,   161,
   162,   163,   164,   165,   166,   167,   168,   169,   170,     0,
     0,    83,    84,     0,   180,   520,    72,     0,    15,     0,
    73,    74,   610,   181,   182,     0,     0,    75,     0,     0,
    76,     0,     0,     0,     0,    77,    78,    79,     0,     0,
     0,    80,    81,    72,    68,    15,    82,    73,    74,    69,
    70,     0,    71,     0,    75,     0,     0,    76,     0,     0,
     0,     0,    77,    78,    79,     0,    83,    84,    80,    81,
    72,   359,    15,   150,    73,    74,    69,    70,     0,    71,
     0,    75,     0,     0,    76,     0,     0,     0,     0,    77,
    78,    79,     0,    83,    84,    80,    81,    72,     0,    15,
   152,    73,    74,     0,     0,     0,     0,     0,    75,     0,
     0,    80,    81,     0,     0,     0,    82,   154,   155,   156,
   611,   157,   158,   159,   160,   161,   162,   163,   164,   165,
   166,   167,   168,   169,   170,     0,    83,    84,     0,     0,
   566,   452,   531,     6,     7,     8,    69,    70,     0,    71,
     9,    10,    11,   532,     0,   533,   534,   535,   536,   537,
   538,   539,   540,   541,   542,   543,    13,    72,    14,    15,
     0,    73,    74,     0,     0,     0,     0,     0,    75,     0,
     0,    76,     0,     0,     0,     0,    77,    78,    79,    14,
     0,     0,    80,    81,   154,   155,   156,    82,   157,   158,
   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
   169,   170,     0,     0,     0,   544,     0,    83,    84,     0,
   248,   452,    60,     0,     0,     0,    69,    70,     0,    71,
     0,     0,     0,   532,     0,   533,   534,   535,   536,   537,
   538,   539,   540,   541,   542,   543,     0,    72,     0,    15,
     0,    73,    74,     0,     0,     0,     0,     0,    75,     0,
     0,    76,     0,     0,     0,     0,    77,    78,    79,     0,
    83,    84,    80,    81,     0,     0,     4,    82,  -118,     5,
     6,     7,     8,     0,     0,     0,     0,     9,    10,    11,
     0,     0,     0,     0,     0,     0,     0,    83,    84,     0,
     0,     0,    12,    13,     0,    14,    15,     5,     6,     7,
     8,     5,     6,     7,     8,     9,    10,    11,     0,     9,
    10,    11,     0,     0,   556,  -118,     0,     0,     0,     0,
     0,    13,     0,    14,  -118,    13,     0,    14,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   154,
   155,   156,    16,   157,   158,   159,   160,   161,   162,   163,
   164,   165,   166,   167,   168,   169,   170,   158,   159,   160,
   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
    50,     0,     0,     0,   586,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   154,   155,   156,   557,   157,   158,
     0,     0,    80,    81,     0,    68,     0,    82,     0,     0,
    69,    70,     0,    71,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   544,     0,    83,    84,     0,
   248,    72,     0,    15,     0,    73,    74,     0,     0,     0,
     0,     0,    75,     0,     0,    76,     0,     0,     0,     0,
    77,    78,    79,     0,     0,     0,    80,    81,     0,     0,
     0,    82,    68,     5,     6,     7,     8,    69,    70,     0,
    71,     9,    10,    11,     0,     0,     0,     0,     0,     0,
     0,    83,    84,     0,   339,     0,     0,    13,    72,    14,
    15,     0,    73,    74,     0,     0,     0,     0,     0,    75,
     0,     0,    76,     0,     0,     0,     0,    77,    78,    79,
     0,     0,     0,    80,    81,     0,    68,     5,    82,     7,
    96,    69,    70,     0,    71,     9,    10,    11,     0,    68,
     0,     0,     0,     0,    69,    70,     0,    71,    83,    84,
     0,    13,    72,     0,    15,     0,    73,    74,     0,     0,
     0,     0,     0,    75,     0,    72,    76,    15,     0,    73,
    74,    77,    78,    79,     0,     0,    75,    80,    81,    76,
     0,     0,    82,     0,    77,    78,    79,     0,     0,     0,
    80,    81,    68,     0,     0,    82,     0,    69,    70,     0,
    71,     0,    83,    84,     0,     0,     0,     0,     0,     0,
     0,     0,     0,   580,     0,    83,    84,     0,    72,    68,
    15,     0,    73,    74,    69,    70,     0,    71,     0,    75,
     0,     0,    76,     0,     0,     0,     0,    77,    78,    79,
     0,     0,     0,    80,    81,    72,    68,    15,    82,    73,
    74,    69,    70,     0,    71,     0,    75,     0,     0,    76,
     0,     0,     0,     0,    77,    78,    79,     0,    83,    84,
    80,    81,    72,   359,    15,   150,    73,    74,    69,    70,
     0,    71,     0,    75,     0,     0,    76,     0,     0,     0,
     0,    77,    78,    79,     0,    83,    84,    80,    81,    72,
     0,    15,   152,    73,    74,     0,     0,     0,     0,     0,
    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
    79,     0,    83,    84,    80,    81,     0,     0,     4,    82,
  -118,     5,     6,     7,     8,     0,     0,     0,     0,     9,
    10,    11,     0,     0,     0,     0,     0,     0,     0,    83,
    84,     0,     0,     0,    12,    13,     0,    14,    15,     5,
     6,     7,     8,     5,     6,     7,     8,     9,    10,    11,
     0,     9,    10,    11,     0,     0,   560,  -118,     0,     0,
     0,     0,     0,    13,     0,    14,  -118,    13,     0,    14,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   154,   155,   156,    16,   157,   158,   159,   160,   161,
   162,   163,   164,   165,   166,   167,   168,   169,   170,   158,
   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
   169,   170,   154,   155,   156,   645,   157,   158,   159,   160,
   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   154,
   155,   156,   623,   157,   158,   159,   160,   161,   162,   163,
   164,   165,   166,   167,   168,   169,   170,   156,     0,   157,
   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
   168,   169,   170
   169,   170,    50,     0,     0,     0,   590,     0,     0,     0,
     0,     0,     0,     0,     0,     0,   154,   155,   156,   561,
   157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
   167,   168,   169,   170,   154,   155,   156,   649,   157,   158,
   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
   169,   170,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   154,   155,   156,   627,   157,   158,   159,   160,   161,
   162,   163,   164,   165,   166,   167,   168,   169,   170,   156,
     0,   157,   158,   159,   160,   161,   162,   163,   164,   165,
   166,   167,   168,   169,   170
};

static const short yycheck[] = {    38,
    39,    51,    27,    28,    29,   120,    49,    22,   101,   204,
    20,     2,     3,    57,     2,     3,   186,    21,    22,   145,
     2,     3,   384,   115,   224,    63,   212,     2,     3,   420,
   230,   282,   226,    43,     9,    10,    11,   106,   116,     1,
    31,    51,   133,    31,     3,    20,    82,    22,    22,    31,
    75,    73,    74,   225,   112,   461,    31,    79,   119,   231,
   133,    38,     9,    85,   175,    39,     1,   239,    43,    30,
     1,    30,   111,    95,    49,   181,    51,   102,    30,    10,
    38,   125,    57,     5,   446,     7,    38,   202,   180,     3,
     4,    50,    25,   103,     0,     3,     4,   107,    38,    76,
    59,   507,    35,    36,    37,     3,   116,   569,    82,     0,
     3,     4,   137,    46,   150,    59,   152,    59,    76,   289,
    82,    54,   183,    98,    59,    76,   101,   101,   103,    76,
    81,   106,   107,    31,   482,   497,    76,   176,    27,   643,
   218,   116,   186,   182,   222,   133,   237,    59,   173,   174,
   125,    82,   221,   559,   502,   213,    76,    82,   620,   133,
    76,    81,    30,   414,   237,    81,   224,   671,    82,    30,
    59,    60,   230,   279,    82,    77,   150,   639,   152,   285,
   642,   292,   644,    59,    27,   207,   119,    30,   227,    82,
   652,    59,    60,    36,   585,     3,     4,   130,    59,    60,
   238,     4,   240,     6,     7,    82,   181,   393,   218,    12,
    13,    14,   222,    82,   386,   387,    59,    60,   390,   258,
   245,    76,   684,    77,    76,    28,    81,    81,   590,   251,
   234,   206,   236,    81,    77,   407,   408,   409,    81,     9,
   412,   413,    50,   218,   370,   289,   221,   222,   287,   237,
   183,    76,    59,    77,   424,   441,    81,    81,   444,     3,
     4,    76,   236,   237,    77,   437,   291,   325,    81,   327,
   363,   364,   466,    77,    77,    78,     1,    81,    76,     4,
     5,     6,     7,   298,   217,    78,    30,    12,    13,    14,
   401,    78,    27,   297,   298,    30,    77,   312,    76,   405,
    81,    36,    27,    28,   279,    30,    50,   282,   333,   479,
   285,    36,   404,    77,   486,    59,     1,    81,   410,     4,
     5,     6,     7,   298,   298,    10,    77,    12,    13,    14,
    81,     4,     5,     6,     7,   393,    77,    78,   312,    12,
    13,    14,    77,    28,    76,   406,    81,    77,    30,   521,
   411,    81,    77,   363,   364,    28,    81,    82,   464,   465,
    77,    36,    59,    60,    81,   471,   472,   392,    50,    82,
   374,   375,   422,   499,   432,     3,     4,    59,    60,    76,
   424,    59,    60,    58,   442,    60,   444,    76,   363,   364,
   433,    77,   367,   378,   566,   405,   381,    82,    76,    38,
   526,   375,    59,   149,    77,    50,    51,    52,   154,   155,
   582,    27,   422,   159,   160,   161,   162,   163,   164,   165,
   166,   167,   168,   169,   170,     3,   451,     9,   467,     7,
   405,    83,     3,     4,   634,   479,   636,    77,     1,   414,
    36,     4,     5,     6,     7,   420,    77,   422,    36,    12,
    13,    14,    30,    78,   464,   465,    59,    60,   433,    30,
   499,   471,   472,    81,   489,    28,    76,    38,     1,     7,
     3,     4,    50,   406,   499,    59,    60,    76,   411,    50,
    38,    59,    60,   678,    59,    60,    76,   526,    59,   464,
   465,   686,    30,   515,    83,   621,   471,   472,   537,     3,
   615,   526,     3,     4,    77,    78,     7,    76,   499,    77,
    78,   499,    50,   538,   260,   261,    83,   499,    36,    82,
    76,    59,    60,    76,   499,    76,    30,    32,   567,    30,
   545,   570,   571,   555,    83,   661,   662,   587,    78,   578,
   544,   545,   585,    59,    60,    38,    50,     3,     4,    50,
    78,     7,     3,     4,   593,    59,    60,    78,    59,    60,
    76,   600,    59,    60,   555,    89,    90,   555,   464,   465,
   545,   545,   611,   555,    30,    83,   634,   587,   636,    30,
   555,     4,   621,     6,     7,    76,   332,     3,    77,    12,
    13,    14,    78,    81,    50,    78,   621,    78,   344,    50,
    38,    38,    78,    59,   643,    28,    81,    30,    59,    60,
   585,     1,   587,     3,     4,     5,     6,     7,    78,    83,
    10,    78,    12,    13,    14,    38,   665,    50,    59,     3,
    59,   377,   671,     7,    59,    38,    59,    60,    28,     7,
    30,     1,    77,     3,     4,     5,     6,     7,     8,     9,
   396,    11,    12,    13,    14,    15,    30,    17,    18,    19,
    39,    20,    27,    28,    29,     2,     3,     2,     3,     2,
     3,    49,     9,    10,    11,    22,    51,   120,     2,     3,
   145,   112,   421,    20,    43,    22,   204,    73,    74,   115,
   101,   186,    51,    79,    31,    57,    31,   224,    31,    85,
    21,    22,    22,   230,   226,    46,    43,    31,   175,    95,
    75,   384,    49,   386,    51,    63,   282,    25,   106,    39,
    57,     1,    82,   133,   212,   181,   463,    35,    36,    37,
   133,     1,   111,   116,     9,   225,    30,   102,    46,     3,
    10,   231,     1,   647,   103,    76,    54,    30,   107,   239,
    81,   484,     3,     4,   180,    38,     0,   116,     3,   202,
     3,    98,    82,   125,   101,     0,   103,    31,   573,   106,
   107,   675,   137,   506,   511,   448,     3,     4,    77,   116,
    38,   101,   213,     3,     4,    30,    27,    30,   125,    30,
   150,    76,   152,   224,   289,    36,    81,   176,   133,   230,
    59,    76,    82,   182,    59,    50,    30,    50,   173,   174,
    59,   119,    82,   133,    59,    60,    59,    59,    76,   624,
    38,   207,   130,   279,   186,   292,   563,   237,   501,   285,
   150,    82,   152,   221,   237,   218,    77,    59,   643,   222,
    81,   646,   183,   648,   181,    27,     3,     4,   227,   415,
   589,   656,    77,    77,    78,    82,    81,    38,    76,   218,
    76,     1,    82,   222,     4,   251,     6,     7,    82,   206,
    30,    76,    12,    13,    14,   183,    81,    59,    60,   258,
   245,   218,    76,   688,   221,   222,   378,    81,    28,   381,
   238,    31,   240,    50,   325,    76,   327,   387,   388,    59,
    60,   391,   237,    30,    82,   370,   394,    82,   287,   217,
    77,    30,    36,   234,    81,   236,   236,   237,   408,   409,
   410,   594,    81,   413,   414,    77,   291,   289,     9,    81,
   425,    50,    59,    60,    58,   402,    60,    77,    78,    77,
    59,    60,   279,    81,   434,   282,   468,    76,   285,   439,
   406,   298,   363,   364,    76,   443,     3,     4,   446,    81,
     7,   298,    77,   394,    76,   312,    81,    77,   333,     1,
    59,    81,     4,     5,     6,     7,   297,   298,   298,   405,
    12,    13,    14,    30,    78,   411,   481,     3,     4,     3,
     4,     7,   312,     3,     4,     3,    28,    77,    76,     7,
   490,    81,   433,    50,   363,   364,    59,    60,    59,    60,
   466,   467,    59,   444,    30,   446,    30,   473,   474,     5,
    30,     7,    30,    76,    78,    76,   363,   364,   393,    77,
   367,    77,    78,    81,    50,   525,    50,    77,   503,     7,
    50,    81,    50,    59,    60,    59,    60,   406,   423,    59,
    82,    59,    60,   374,   375,   375,   434,   435,     3,     4,
    59,    60,    30,   425,   423,   530,   407,    59,    60,   406,
     1,   412,     3,     4,    76,     3,     4,    76,   415,    82,
   570,    76,    50,    77,   421,    38,   423,    59,   453,    27,
   469,    59,    60,    50,    51,    52,   586,   434,   435,   407,
    59,    60,    30,     9,   412,    59,    60,   466,   467,    83,
    38,   638,    77,   640,   473,   474,    36,    27,    36,   481,
    30,    77,    50,    81,   503,    36,    36,    78,   493,   466,
   467,    59,     4,   519,     6,     7,   473,   474,   503,    76,
    12,    13,    14,    77,    78,     4,     5,     6,     7,    59,
    60,   530,    76,    12,    13,    14,    28,     3,    59,    60,
   625,     7,   541,    76,   682,   530,   503,    77,   503,    28,
   503,    81,   690,   559,    89,    90,   619,   542,    38,   503,
    76,   489,     6,     7,    30,   466,   467,    78,    12,    13,
    14,    83,   571,    76,    83,   574,   575,    76,    76,    83,
   665,   666,   549,   582,    50,    77,    78,   638,    78,   640,
    78,   589,   549,    59,    32,    38,   591,    83,   597,    76,
     3,    77,   559,    81,   559,   604,   559,   548,   549,   549,
    78,    78,   591,    78,    38,   559,   615,    38,    78,     4,
     5,     6,     7,    81,    78,    38,   625,    12,    13,    14,
    83,    78,   589,    59,   591,    77,    59,    59,    38,   149,
   625,    77,     7,    28,   154,   155,    38,    77,   647,   159,
   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
   170,     1,    77,     3,     4,     5,     6,     7,     8,     9,
   669,    11,    12,    13,    14,    15,   675,    17,    18,    19,
    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    30,    31,    77,    33,    34,    38,    50,    77,    77,    16,
    40,    78,    59,    43,   430,    59,    76,    59,    48,    49,
    50,    77,    77,    76,    54,    55,     5,     6,     7,    59,
     5,     6,     7,    12,    13,    14,   452,    12,    13,    14,
     3,     4,     5,     6,     7,   461,   462,    77,    78,    79,
    80,     1,    82,     3,     4,    30,     6,     7,     8,     9,
    17,    11,    12,    13,    14,    77,   482,    76,    76,   485,
    54,    55,    77,    57,    58,    59,    60,    76,    28,    29,
    77,    31,     9,    33,    34,    77,   502,    77,    59,   505,
    40,   507,    76,    43,    81,     6,     7,    77,    48,    49,
    50,    12,    13,    14,    54,    55,   522,    76,     1,    59,
    76,     4,    77,     6,     7,    77,     0,   533,     0,    12,
    13,    14,    46,    47,    48,    49,    50,    51,    52,    79,
    80,   570,    82,   213,   442,    28,   555,   292,    31,    53,
   556,   423,   291,   559,     1,   430,     3,     4,     5,     6,
     7,     8,     9,   189,    11,    12,    13,    14,    15,   505,
    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    27,    28,    29,    30,    31,   335,    33,    34,   237,     4,
     5,     6,     7,    40,    77,    78,    43,    12,    13,    14,
   606,    48,    49,    50,   327,   460,   432,    54,    55,   245,
   442,     1,    59,    28,     4,     5,     6,     7,   333,   394,
    10,   621,    12,    13,    14,    48,    49,    50,    51,    52,
    77,   666,    79,    80,     1,    82,     3,     4,    28,   444,
    30,     8,     9,   621,    11,   668,   286,    -1,    15,   367,
    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
    -1,    -1,    -1,    40,    54,    55,    43,    57,    58,    59,
    60,    48,    49,    50,    -1,    -1,    76,    54,    55,    -1,
    -1,    -1,    59,     1,    -1,    -1,     4,    -1,     6,     7,
    -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,
    77,    78,    79,    80,     1,    82,     3,     4,    -1,    -1,
    28,     8,     9,    31,    11,    -1,    -1,    -1,    15,    -1,
    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,     4,
     5,     6,     7,    40,    -1,    10,    43,    12,    13,    14,
    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,
    -1,    -1,    59,    28,    -1,    30,    -1,    -1,    -1,     4,
     5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
    77,    -1,    79,    80,     1,    82,     3,     4,    -1,    -1,
    -1,     8,     9,    28,    11,    30,    -1,    -1,    15,    -1,
    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,
    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,
    -1,     1,    59,     3,     4,    -1,    -1,    -1,     8,     9,
    -1,    11,    45,    46,    47,    48,    49,    50,    51,    52,
    77,    -1,    79,    80,    -1,    82,    -1,    -1,    -1,    29,
    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    58,    59,
    60,     1,    -1,     3,     4,    -1,    -1,    -1,     8,     9,
    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
    80,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    29,
    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    58,    59,
    60,     1,    -1,     3,    -1,    -1,    -1,    -1,     8,     9,
    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
    80,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    29,
    -1,    31,    -1,    33,    34,    -1,    36,    -1,    -1,    -1,
    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    58,    59,
    60,     1,    -1,     3,    -1,    -1,    -1,    -1,     8,     9,
    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
    80,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    29,
    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
    50,    -1,    -1,    -1,    54,    55,     1,    -1,     3,    59,
    -1,    -1,    -1,     8,     9,     1,    11,    -1,     4,     5,
     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,    79,
    80,    -1,    82,    -1,    29,    -1,    31,    -1,    33,    34,
    -1,    27,    28,    -1,    30,    40,    -1,    -1,    43,    -1,
    36,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,
    55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    59,    60,    -1,    -1,     1,    -1,    -1,
     4,     5,     6,     7,    79,    80,    -1,    82,    12,    13,
    14,    77,     3,    -1,    -1,    81,    82,     8,     9,    -1,
    11,    -1,    -1,    27,    28,    -1,    30,    -1,    -1,    -1,
    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    29,     3,
    31,    -1,    33,    34,     8,     9,    -1,    11,    -1,    40,
    -1,    -1,    43,    -1,    -1,    59,    60,    48,    49,    50,
    -1,    -1,    -1,    54,    55,    29,    -1,    31,    59,    33,
    34,    -1,    -1,    77,    -1,    -1,    40,    81,    82,    43,
    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    79,    80,
    54,    55,    83,    -1,     3,    59,    -1,    -1,    -1,     8,
     9,    -1,    11,    41,    42,    43,    44,    45,    46,    47,
    48,    49,    50,    51,    52,    79,    80,    -1,    -1,    83,
    30,    31,    77,    33,    34,    16,    78,     5,     6,     7,
    40,    59,    77,    43,    12,    13,    14,    77,    48,    49,
    50,    59,    76,    17,    54,    55,    77,     1,    77,    59,
     4,     5,     6,     7,    76,    76,    10,    76,    12,    13,
    14,     3,     4,     5,     6,     7,    77,    77,    78,    79,
    80,     9,    82,    77,    28,    48,    49,    50,    51,    52,
   260,   261,     1,    77,     3,     4,     5,     6,     7,     8,
     9,    59,    11,    12,    13,    14,    15,    81,    17,    18,
    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    29,    30,    31,    77,    33,    34,    76,     4,     5,     6,
     7,    40,    77,    10,    43,    12,    13,    14,    82,    48,
    49,    50,    76,     0,    77,    54,    55,     0,   292,   574,
    59,    28,   213,    30,   559,   444,     4,     5,     6,     7,
    53,   424,   332,   189,    12,    13,    14,   291,    77,   431,
    79,    80,   509,    82,   344,   462,     1,   433,     3,     4,
    28,   335,    30,     8,     9,   327,    11,   237,   245,   444,
    15,   625,    17,    18,    19,    20,    21,    22,    23,    24,
    25,    26,    27,   333,    29,   446,    31,   377,    33,    34,
   395,   625,   672,   670,   286,    40,    54,    55,    43,    57,
    58,    59,    60,    48,    49,    50,   367,   397,    -1,    54,
    55,    -1,    -1,    -1,    59,     1,    -1,     3,     4,     5,
     6,     7,    -1,    -1,    10,    -1,    12,    13,    14,    -1,
    -1,    -1,    77,    78,    79,    80,    -1,    82,     5,     6,
     7,   431,    28,    -1,    30,    12,    13,    14,    -1,     1,
    -1,    -1,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
    12,    13,    14,    30,   454,    45,    46,    47,    48,    49,
    50,    51,    52,   463,   464,    27,    28,    -1,    30,    -1,
    -1,    -1,    -1,    -1,    36,     1,    -1,     3,     4,    -1,
    76,    -1,     8,     9,   484,    11,    -1,   487,    -1,    15,
    -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    -1,    29,    -1,    31,   506,    33,    34,   509,
    -1,   511,    -1,    -1,    40,    77,    -1,    43,    -1,    81,
    82,    -1,    48,    49,    50,    -1,   526,    -1,    54,    55,
    -1,    -1,    -1,    59,    -1,    54,    55,   537,    57,    58,
    59,    60,    44,    45,    46,    47,    48,    49,    50,    51,
    52,    77,    -1,    79,    80,    -1,    82,    76,    -1,     1,
   560,     3,     4,   563,    -1,    -1,     8,     9,    -1,    11,
    -1,    -1,    -1,    15,    -1,    17,    18,    19,    20,    21,
    22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
   610,    -1,    54,    55,    -1,    -1,     1,    59,     3,     4,
    -1,     6,     7,     8,     9,    -1,    11,    12,    13,    14,
    -1,    -1,    -1,    -1,    -1,    77,    -1,    79,    80,    -1,
    82,    -1,    -1,    28,    29,    -1,    31,    -1,    33,    34,
    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,
    -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,
    55,    -1,    -1,     1,    59,     3,     4,    -1,    -1,    -1,
     8,     9,    -1,    11,    -1,    -1,    -1,     1,    -1,    -1,
     4,     5,     6,     7,    79,    80,    10,    82,    12,    13,
    14,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
    -1,    -1,    40,    -1,    28,    43,    30,    -1,    -1,    -1,
    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,    -1,
    58,    59,    60,     1,    -1,     3,     4,    -1,    -1,    -1,
     8,     9,    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,
    78,    79,    80,    -1,    82,    -1,    -1,    -1,    -1,    -1,
    -1,    29,    76,    31,    -1,    33,    34,    -1,    -1,    -1,
    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,
    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,    -1,
    58,    59,    60,     1,    -1,     3,    -1,    -1,    -1,    -1,
     8,     9,    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,
    78,    79,    80,    -1,    82,    -1,    -1,    -1,    -1,    -1,
    -1,    29,    -1,    31,    -1,    33,    34,    -1,    36,    -1,
    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,
    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,    -1,
    58,    59,    60,     1,    -1,     3,    -1,    -1,    -1,    -1,
     8,     9,    -1,    11,     1,    -1,    -1,     4,    -1,     6,
     7,    79,    80,    -1,    82,    12,    13,    14,    -1,    -1,
    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
    -1,    28,    40,    -1,    31,    43,    -1,    -1,    -1,    -1,
    48,    49,    50,    -1,    -1,    -1,    54,    55,     1,    -1,
     3,    59,    -1,    -1,    -1,     8,     9,     1,    11,    -1,
     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,
    14,    79,    80,    -1,    82,    -1,    29,    -1,    31,    -1,
    33,    34,    -1,    27,    28,    -1,    30,    40,    -1,    -1,
    43,    -1,    36,    -1,    -1,    48,    49,    50,    -1,    -1,
    -1,    54,    55,    -1,    -1,    -1,    59,    46,    47,    48,
    49,    50,    51,    52,    -1,    59,    60,    -1,    -1,     1,
    -1,    -1,     4,     5,     6,     7,    79,    80,    -1,    82,
    12,    13,    14,    77,     3,    -1,    -1,    81,    82,     8,
     9,    -1,    11,    -1,    -1,    27,    28,    -1,    30,    -1,
    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,
    29,     3,    31,    -1,    33,    34,     8,     9,    -1,    11,
    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,
    -1,    40,    -1,    -1,    43,    -1,    -1,    59,    60,    48,
    49,    50,    -1,    -1,    -1,    54,    55,    29,    -1,    31,
    59,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
    59,    33,    34,    -1,    -1,    77,    -1,    -1,    40,    81,
    82,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
    79,    80,    54,    55,    83,    -1,     3,    59,    -1,    -1,
    -1,     8,     9,    -1,    11,    42,    43,    44,    45,    46,
    47,    48,    49,    50,    51,    52,    -1,    79,    80,    -1,
    -1,     8,     9,    -1,    11,    41,    42,    43,    44,    45,
    46,    47,    48,    49,    50,    51,    52,    79,    80,    -1,
    -1,    83,    29,     3,    31,    -1,    33,    34,     8,     9,
    -1,    11,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,
    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,    29,
    -1,    31,    59,    33,    34,    -1,    -1,    -1,    -1,    -1,
    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
    50,    -1,    79,    80,    54,    55,    83,    -1,     3,    59,
    -1,    -1,    -1,     8,     9,    -1,    11,    43,    44,    45,
    46,    47,    48,    49,    50,    51,    52,    -1,    -1,    79,
    80,    -1,    -1,    83,    29,    -1,    31,    -1,    33,    34,
    10,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,
    -1,    -1,    -1,     8,     9,    -1,    11,    42,    43,    44,
    45,    46,    47,    48,    49,    50,    51,    52,    -1,    79,
    80,    -1,    -1,    83,    29,     3,    31,    -1,    33,    34,
     8,     9,    -1,    11,    -1,    40,    -1,    -1,    43,    -1,
    -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,
    55,    -1,    -1,    -1,    59,    35,    36,    37,    38,    39,
    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
    50,    51,    52,    -1,    79,    80,    -1,    -1,    83,     3,
     4,     5,     6,     7,     8,     9,    -1,    11,    12,    13,
    14,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
    24,    25,    26,    27,    28,    29,    30,    31,    -1,    33,
    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,
    -1,    -1,    -1,    -1,    48,    49,    50,    30,    -1,    -1,
    54,    55,    35,    36,    37,    59,    39,    40,    41,    42,
    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
    -1,    -1,    -1,    77,    -1,    79,    80,    -1,    82,     3,
     4,    -1,    -1,    -1,     8,     9,    -1,    11,    -1,    -1,
    -1,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,
    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,
    54,    55,    -1,     3,    -1,    59,    -1,    -1,     8,     9,
    -1,    11,    44,    45,    46,    47,    48,    49,    50,    51,
    52,    -1,    -1,    77,    -1,    79,    80,    -1,    82,    29,
    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,    59,
     3,     4,     5,     6,     7,     8,     9,    -1,    11,    12,
    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
    80,    -1,    82,    -1,    -1,    28,    29,    30,    31,    -1,
    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,
    55,    29,    -1,    31,    59,    33,    34,    -1,     4,    -1,
     6,     7,    40,    -1,    -1,    43,    12,    13,    14,    -1,
    48,    49,    50,    -1,    79,    80,    54,    55,    83,    -1,
     3,    59,    28,    -1,    30,     8,     9,    -1,    11,    43,
    44,    45,    46,    47,    48,    49,    50,    51,    52,    -1,
    -1,    79,    80,    -1,    50,    83,    29,    -1,    31,    -1,
    33,    34,    10,    59,    60,    -1,    -1,    40,    -1,    -1,
    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    -1,
    -1,    54,    55,    -1,     3,     4,    59,     6,     7,     8,
     9,    -1,    11,    12,    13,    14,    -1,     3,    -1,    -1,
    -1,    -1,     8,     9,    -1,    11,    79,    80,    -1,    28,
    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,
    -1,    40,    -1,    29,    43,    31,    -1,    33,    34,    48,
    49,    50,    -1,    -1,    40,    54,    55,    43,    -1,    -1,
    59,    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,
     3,    -1,    -1,    59,    -1,     8,     9,    -1,    11,    -1,
    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    77,    -1,    79,    80,    -1,    29,     3,    31,    -1,
    33,    34,     8,     9,    -1,    11,    -1,    40,    -1,    -1,
    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    -1,
    -1,    54,    55,    29,     3,    31,    59,    33,    34,     8,
     9,    -1,    11,    -1,    40,    -1,    -1,    43,    -1,    -1,
    -1,    -1,    48,    49,    50,    -1,    79,    80,    54,    55,
    29,     3,    31,    59,    33,    34,     8,     9,    -1,    11,
    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,
    49,    50,    -1,    79,    80,    54,    55,    29,    -1,    31,
    59,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
    -1,    54,    55,    -1,    -1,    -1,    59,    35,    36,    37,
    38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
    48,    49,    50,    51,    52,    -1,    79,    80,    -1,    -1,
    83,     3,     4,     5,     6,     7,     8,     9,    -1,    11,
    12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    30,
    -1,    -1,    54,    55,    35,    36,    37,    59,    39,    40,
    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
    51,    52,    -1,    -1,    -1,    77,    -1,    79,    80,    -1,
    82,     3,     4,    -1,    -1,    -1,     8,     9,    -1,    11,
    -1,    -1,    -1,    15,    -1,    17,    18,    19,    20,    21,
    22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
    79,    80,    54,    55,    -1,    -1,     1,    59,     3,     4,
     5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    -1,
    -1,    -1,    27,    28,    -1,    30,    31,     4,     5,     6,
     7,     4,     5,     6,     7,    12,    13,    14,    -1,    12,
    13,    14,    -1,    -1,    10,    50,    -1,    -1,    -1,    -1,
    -1,    28,    -1,    30,    59,    28,    -1,    30,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,
    36,    37,    77,    39,    40,    41,    42,    43,    44,    45,
    46,    47,    48,    49,    50,    51,    52,    40,    41,    42,
    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
    77,    -1,    -1,    -1,    77,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    35,    36,    37,    83,    39,    40,
    -1,    -1,    54,    55,    -1,     3,    -1,    59,    -1,    -1,
     8,     9,    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    77,    -1,    79,    80,    -1,
    82,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,
    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,    -1,
    -1,    59,     3,     4,     5,     6,     7,     8,     9,    -1,
    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    79,    80,    -1,    82,    -1,    -1,    28,    29,    30,
    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,
    -1,    -1,    -1,    54,    55,    -1,     3,     4,    59,     6,
     7,     8,     9,    -1,    11,    12,    13,    14,    -1,     3,
    -1,    -1,    -1,    -1,     8,     9,    -1,    11,    79,    80,
    -1,    28,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
    -1,    -1,    -1,    40,    -1,    29,    43,    31,    -1,    33,
    34,    48,    49,    50,    -1,    -1,    40,    54,    55,    43,
    -1,    -1,    59,    -1,    48,    49,    50,    -1,    -1,    -1,
    54,    55,     3,    -1,    -1,    59,    -1,     8,     9,    -1,
    11,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    77,    -1,    79,    80,    -1,    29,     3,
    31,    -1,    33,    34,     8,     9,    -1,    11,    -1,    40,
    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,
    -1,    -1,    -1,    54,    55,    29,     3,    31,    59,    33,
    34,     8,     9,    -1,    11,    -1,    40,    -1,    -1,    43,
    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    79,    80,
    54,    55,    29,     3,    31,    59,    33,    34,     8,     9,
    -1,    11,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,
    -1,    48,    49,    50,    -1,    79,    80,    54,    55,    29,
    -1,    31,    59,    33,    34,    -1,    -1,    -1,    -1,    -1,
    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
    50,    -1,    79,    80,    54,    55,    -1,    -1,     1,    59,
     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
    80,    -1,    -1,    -1,    27,    28,    -1,    30,    31,     4,
     5,     6,     7,     4,     5,     6,     7,    12,    13,    14,
    -1,    12,    13,    14,    -1,    -1,    10,    50,    -1,    -1,
    -1,    -1,    -1,    28,    -1,    30,    59,    28,    -1,    30,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    35,    36,    37,    77,    39,    40,    41,    42,    43,
    44,    45,    46,    47,    48,    49,    50,    51,    52,    40,
    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
    51,    52,    77,    -1,    -1,    -1,    77,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    35,    36,    37,    83,
    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
    49,    50,    51,    52,    35,    36,    37,    38,    39,    40,
    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
    51,    52,    35,    36,    37,    38,    39,    40,    41,    42,
    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,
    36,    37,    83,    39,    40,    41,    42,    43,    44,    45,
    46,    47,    48,    49,    50,    51,    52,    37,    -1,    39,
    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
    50,    51,    52
    51,    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    35,    36,    37,    83,    39,    40,    41,    42,    43,
    44,    45,    46,    47,    48,    49,    50,    51,    52,    37,
    -1,    39,    40,    41,    42,    43,    44,    45,    46,    47,
    48,    49,    50,    51,    52
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "/etc/bison.simple"
@@ -2975,13 +2977,22 @@
    break;}
case 267:
#line 1418 "c-parse.y"
{ if (pedantic)
		    pedwarn ("ANSI C forbids member declarations with no members");
		  shadow_tag(yyvsp[0].ttype);
		  yyval.ttype = NULL_TREE; ;
{
		  /* Support for unnamed structs or unions as members of 
		     structs or unions (which is [a] useful and [b] supports 
		     MS P-SDK).  */
		  if (pedantic)
		    pedwarn ("ANSI C doesn't support unnamed structs/unions");

		  yyval.ttype = grokfield(yyvsp[-2].filename, yyvsp[-1].lineno, NULL, current_declspecs, NULL_TREE);
		  current_declspecs = TREE_VALUE (declspec_stack);
		  prefix_attributes = TREE_PURPOSE (declspec_stack);
		  declspec_stack = TREE_CHAIN (declspec_stack);
		  resume_momentary (yyvsp[-3].itype);
		;
    break;}
case 268:
#line 1423 "c-parse.y"
#line 1432 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
		  current_declspecs = TREE_VALUE (declspec_stack);
		  prefix_attributes = TREE_PURPOSE (declspec_stack);
@@ -2989,144 +3000,144 @@
		  resume_momentary (yyvsp[-1].itype); ;
    break;}
case 269:
#line 1429 "c-parse.y"
#line 1438 "c-parse.y"
{ if (pedantic)
		    pedwarn ("ANSI C forbids member declarations with no members");
		  shadow_tag(yyvsp[0].ttype);
		  yyval.ttype = NULL_TREE; ;
    break;}
case 270:
#line 1434 "c-parse.y"
#line 1443 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 271:
#line 1436 "c-parse.y"
#line 1445 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
                  RESTORE_WARN_FLAGS (yyvsp[-1].itype); ;
    break;}
case 273:
#line 1443 "c-parse.y"
#line 1452 "c-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 274:
#line 1448 "c-parse.y"
#line 1457 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
		  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
    break;}
case 275:
#line 1452 "c-parse.y"
#line 1461 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
		  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
    break;}
case 276:
#line 1455 "c-parse.y"
#line 1464 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
		  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
    break;}
case 278:
#line 1467 "c-parse.y"
#line 1476 "c-parse.y"
{ if (yyvsp[-2].ttype == error_mark_node)
		    yyval.ttype = yyvsp[-2].ttype;
		  else
		    yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
    break;}
case 279:
#line 1472 "c-parse.y"
#line 1481 "c-parse.y"
{ yyval.ttype = error_mark_node; ;
    break;}
case 280:
#line 1478 "c-parse.y"
#line 1487 "c-parse.y"
{ yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 281:
#line 1480 "c-parse.y"
#line 1489 "c-parse.y"
{ yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 282:
#line 1485 "c-parse.y"
#line 1494 "c-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 283:
#line 1487 "c-parse.y"
#line 1496 "c-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 284:
#line 1492 "c-parse.y"
#line 1501 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 286:
#line 1498 "c-parse.y"
#line 1507 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 287:
#line 1500 "c-parse.y"
#line 1509 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
    break;}
case 288:
#line 1505 "c-parse.y"
#line 1514 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 289:
#line 1507 "c-parse.y"
#line 1516 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
    break;}
case 290:
#line 1512 "c-parse.y"
#line 1521 "c-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 291:
#line 1515 "c-parse.y"
#line 1524 "c-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 292:
#line 1517 "c-parse.y"
#line 1526 "c-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 293:
#line 1519 "c-parse.y"
#line 1528 "c-parse.y"
{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 294:
#line 1521 "c-parse.y"
#line 1530 "c-parse.y"
{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
    break;}
case 295:
#line 1523 "c-parse.y"
#line 1532 "c-parse.y"
{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
    break;}
case 296:
#line 1525 "c-parse.y"
#line 1534 "c-parse.y"
{ yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 297:
#line 1527 "c-parse.y"
#line 1536 "c-parse.y"
{ yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 298:
#line 1529 "c-parse.y"
#line 1538 "c-parse.y"
{ yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
    break;}
case 299:
#line 1533 "c-parse.y"
#line 1542 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 300:
#line 1542 "c-parse.y"
#line 1551 "c-parse.y"
{
		  if (pedantic && yyvsp[0].ends_in_label)
		    pedwarn ("ANSI C forbids label at end of compound statement");
		;
    break;}
case 302:
#line 1551 "c-parse.y"
#line 1560 "c-parse.y"
{ yyval.ends_in_label = yyvsp[0].ends_in_label; ;
    break;}
case 303:
#line 1553 "c-parse.y"
#line 1562 "c-parse.y"
{ yyval.ends_in_label = 0; ;
    break;}
case 307:
#line 1565 "c-parse.y"
#line 1574 "c-parse.y"
{ emit_line_note (input_filename, lineno);
		  pushlevel (0);
		  clear_last_expr ();
@@ -3135,12 +3146,12 @@
		;
    break;}
case 309:
#line 1578 "c-parse.y"
#line 1587 "c-parse.y"
{ if (pedantic)
		    pedwarn ("ANSI C forbids label declarations"); ;
    break;}
case 312:
#line 1589 "c-parse.y"
#line 1598 "c-parse.y"
{ tree link;
		  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
		    {
@@ -3151,19 +3162,19 @@
		;
    break;}
case 313:
#line 1603 "c-parse.y"
#line 1612 "c-parse.y"
{;
    break;}
case 315:
#line 1607 "c-parse.y"
#line 1616 "c-parse.y"
{ compstmt_count++; ;
    break;}
case 316:
#line 1610 "c-parse.y"
#line 1619 "c-parse.y"
{ yyval.ttype = convert (void_type_node, integer_zero_node); ;
    break;}
case 317:
#line 1612 "c-parse.y"
#line 1621 "c-parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_end_bindings (getdecls (), 1, 0);
		  yyval.ttype = poplevel (1, 1, 0);
@@ -3173,7 +3184,7 @@
		    pop_momentary (); ;
    break;}
case 318:
#line 1620 "c-parse.y"
#line 1629 "c-parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_end_bindings (getdecls (), kept_level_p (), 0);
		  yyval.ttype = poplevel (kept_level_p (), 0, 0);
@@ -3183,7 +3194,7 @@
		    pop_momentary (); ;
    break;}
case 319:
#line 1628 "c-parse.y"
#line 1637 "c-parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_end_bindings (getdecls (), kept_level_p (), 0);
		  yyval.ttype = poplevel (kept_level_p (), 0, 0);
@@ -3193,7 +3204,7 @@
		    pop_momentary (); ;
    break;}
case 322:
#line 1648 "c-parse.y"
#line 1657 "c-parse.y"
{ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
		  c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0, 
				       compstmt_count);
@@ -3203,7 +3214,7 @@
		  position_after_white_space (); ;
    break;}
case 323:
#line 1662 "c-parse.y"
#line 1671 "c-parse.y"
{ stmt_count++;
		  compstmt_count++;
		  emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
@@ -3213,43 +3224,43 @@
		  position_after_white_space (); ;
    break;}
case 324:
#line 1670 "c-parse.y"
#line 1679 "c-parse.y"
{ expand_loop_continue_here (); ;
    break;}
case 325:
#line 1674 "c-parse.y"
#line 1683 "c-parse.y"
{ yyval.filename = input_filename; ;
    break;}
case 326:
#line 1678 "c-parse.y"
#line 1687 "c-parse.y"
{ yyval.lineno = lineno; ;
    break;}
case 327:
#line 1683 "c-parse.y"
#line 1692 "c-parse.y"
{ ;
    break;}
case 328:
#line 1688 "c-parse.y"
#line 1697 "c-parse.y"
{ ;
    break;}
case 329:
#line 1693 "c-parse.y"
#line 1702 "c-parse.y"
{ yyval.ends_in_label = yyvsp[0].ends_in_label; ;
    break;}
case 330:
#line 1698 "c-parse.y"
#line 1707 "c-parse.y"
{ yyval.ends_in_label = 0; ;
    break;}
case 331:
#line 1700 "c-parse.y"
#line 1709 "c-parse.y"
{ yyval.ends_in_label = 1; ;
    break;}
case 332:
#line 1706 "c-parse.y"
#line 1715 "c-parse.y"
{ stmt_count++; ;
    break;}
case 334:
#line 1709 "c-parse.y"
#line 1718 "c-parse.y"
{ stmt_count++;
		  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
/* It appears that this should not be done--that a non-lvalue array
@@ -3268,19 +3279,19 @@
		  clear_momentary (); ;
    break;}
case 335:
#line 1726 "c-parse.y"
#line 1735 "c-parse.y"
{ c_expand_start_else ();
		  yyvsp[-1].itype = stmt_count;
		  position_after_white_space (); ;
    break;}
case 336:
#line 1730 "c-parse.y"
#line 1739 "c-parse.y"
{ c_expand_end_cond ();
		  if (extra_warnings && stmt_count == yyvsp[-3].itype)
		    warning ("empty body in an else-statement"); ;
    break;}
case 337:
#line 1734 "c-parse.y"
#line 1743 "c-parse.y"
{ c_expand_end_cond ();
		  /* This warning is here instead of in simple_if, because we
		     do not want a warning if an empty if is followed by an
@@ -3291,11 +3302,11 @@
						"empty body in an if-statement"); ;
    break;}
case 338:
#line 1746 "c-parse.y"
#line 1755 "c-parse.y"
{ c_expand_end_cond (); ;
    break;}
case 339:
#line 1748 "c-parse.y"
#line 1757 "c-parse.y"
{ stmt_count++;
		  emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
		  /* The emit_nop used to come before emit_line_note,
@@ -3307,7 +3318,7 @@
		  emit_nop (); ;
    break;}
case 340:
#line 1758 "c-parse.y"
#line 1767 "c-parse.y"
{ /* Don't start the loop till we have succeeded
		     in parsing the end test.  This is to make sure
		     that we end every loop we start.  */
@@ -3318,11 +3329,11 @@
		  position_after_white_space (); ;
    break;}
case 341:
#line 1767 "c-parse.y"
#line 1776 "c-parse.y"
{ expand_end_loop (); ;
    break;}
case 342:
#line 1770 "c-parse.y"
#line 1779 "c-parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_exit_loop_if_false (NULL_PTR,
					     truthvalue_conversion (yyvsp[-2].ttype));
@@ -3330,12 +3341,12 @@
		  clear_momentary (); ;
    break;}
case 343:
#line 1777 "c-parse.y"
#line 1786 "c-parse.y"
{ expand_end_loop ();
		  clear_momentary (); ;
    break;}
case 344:
#line 1781 "c-parse.y"
#line 1790 "c-parse.y"
{ stmt_count++;
		  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
		  /* See comment in `while' alternative, above.  */
@@ -3348,12 +3359,12 @@
		;
    break;}
case 345:
#line 1793 "c-parse.y"
#line 1802 "c-parse.y"
{ yyvsp[0].lineno = lineno;
		  yyval.filename = input_filename; ;
    break;}
case 346:
#line 1796 "c-parse.y"
#line 1805 "c-parse.y"
{ 
		  /* Start the loop.  Doing this after parsing
		     all the expressions ensures we will end the loop.  */
@@ -3371,7 +3382,7 @@
		  position_after_white_space (); ;
    break;}
case 347:
#line 1812 "c-parse.y"
#line 1821 "c-parse.y"
{ /* Emit the increment expression, with a line number.  */
		  emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
		  expand_loop_continue_here ();
@@ -3384,7 +3395,7 @@
		  expand_end_loop (); ;
    break;}
case 348:
#line 1823 "c-parse.y"
#line 1832 "c-parse.y"
{ stmt_count++;
		  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
		  c_expand_start_case (yyvsp[-1].ttype);
@@ -3394,7 +3405,7 @@
		  position_after_white_space (); ;
    break;}
case 349:
#line 1831 "c-parse.y"
#line 1840 "c-parse.y"
{ expand_end_case (yyvsp[-3].ttype);
		  if (yychar == CONSTANT || yychar == STRING)
		    pop_momentary_nofree ();
@@ -3402,33 +3413,33 @@
		    pop_momentary (); ;
    break;}
case 350:
#line 1837 "c-parse.y"
#line 1846 "c-parse.y"
{ stmt_count++;
		  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
		  if ( ! expand_exit_something ())
		    error ("break statement not within loop or switch"); ;
    break;}
case 351:
#line 1842 "c-parse.y"
#line 1851 "c-parse.y"
{ stmt_count++;
		  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
		  if (! expand_continue_loop (NULL_PTR))
		    error ("continue statement not within a loop"); ;
    break;}
case 352:
#line 1847 "c-parse.y"
#line 1856 "c-parse.y"
{ stmt_count++;
		  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
		  c_expand_return (NULL_TREE); ;
    break;}
case 353:
#line 1851 "c-parse.y"
#line 1860 "c-parse.y"
{ stmt_count++;
		  emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
		  c_expand_return (yyvsp[-1].ttype); ;
    break;}
case 354:
#line 1855 "c-parse.y"
#line 1864 "c-parse.y"
{ stmt_count++;
		  emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
		  STRIP_NOPS (yyvsp[-2].ttype);
@@ -3440,7 +3451,7 @@
		    error ("argument of `asm' is not a constant string"); ;
    break;}
case 355:
#line 1866 "c-parse.y"
#line 1875 "c-parse.y"
{ stmt_count++;
		  emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
		  c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
@@ -3448,7 +3459,7 @@
					 input_filename, lineno); ;
    break;}
case 356:
#line 1873 "c-parse.y"
#line 1882 "c-parse.y"
{ stmt_count++;
		  emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
		  c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
@@ -3456,7 +3467,7 @@
					 input_filename, lineno); ;
    break;}
case 357:
#line 1881 "c-parse.y"
#line 1890 "c-parse.y"
{ stmt_count++;
		  emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
		  c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
@@ -3464,7 +3475,7 @@
					 input_filename, lineno); ;
    break;}
case 358:
#line 1887 "c-parse.y"
#line 1896 "c-parse.y"
{ tree decl;
		  stmt_count++;
		  emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
@@ -3477,7 +3488,7 @@
		;
    break;}
case 359:
#line 1898 "c-parse.y"
#line 1907 "c-parse.y"
{ if (pedantic)
		    pedwarn ("ANSI C forbids `goto *expr;'");
		  stmt_count++;
@@ -3485,7 +3496,7 @@
		  expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
    break;}
case 362:
#line 1913 "c-parse.y"
#line 1922 "c-parse.y"
{
	    /* The value returned by this action is  */
	    /*      1 if everything is OK */ 
@@ -3508,14 +3519,14 @@
	  ;
    break;}
case 363:
#line 1934 "c-parse.y"
#line 1943 "c-parse.y"
{
	    if (yyvsp[-1].itype)
	      iterator_for_loop_end (yyvsp[-3].ttype);
	  ;
    break;}
case 364:
#line 1969 "c-parse.y"
#line 1978 "c-parse.y"
{ register tree value = check_case_value (yyvsp[-1].ttype);
		  register tree label
		    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
@@ -3548,7 +3559,7 @@
		  position_after_white_space (); ;
    break;}
case 365:
#line 2000 "c-parse.y"
#line 2009 "c-parse.y"
{ register tree value1 = check_case_value (yyvsp[-3].ttype);
		  register tree value2 = check_case_value (yyvsp[-1].ttype);
		  register tree label
@@ -3581,7 +3592,7 @@
		  position_after_white_space (); ;
    break;}
case 366:
#line 2031 "c-parse.y"
#line 2040 "c-parse.y"
{
		  tree duplicate;
		  register tree label
@@ -3598,7 +3609,7 @@
		  position_after_white_space (); ;
    break;}
case 367:
#line 2046 "c-parse.y"
#line 2055 "c-parse.y"
{ tree label = define_label (input_filename, lineno, yyvsp[-2].ttype);
		  stmt_count++;
		  emit_nop ();
@@ -3610,52 +3621,52 @@
		  position_after_white_space (); ;
    break;}
case 368:
#line 2061 "c-parse.y"
#line 2070 "c-parse.y"
{ emit_line_note (input_filename, lineno);
		  yyval.ttype = NULL_TREE; ;
    break;}
case 369:
#line 2064 "c-parse.y"
#line 2073 "c-parse.y"
{ emit_line_note (input_filename, lineno); ;
    break;}
case 370:
#line 2069 "c-parse.y"
#line 2078 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 372:
#line 2076 "c-parse.y"
#line 2085 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 375:
#line 2083 "c-parse.y"
#line 2092 "c-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 376:
#line 2088 "c-parse.y"
#line 2097 "c-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
    break;}
case 377:
#line 2093 "c-parse.y"
#line 2102 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
    break;}
case 378:
#line 2095 "c-parse.y"
#line 2104 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
    break;}
case 379:
#line 2101 "c-parse.y"
#line 2110 "c-parse.y"
{ pushlevel (0);
		  clear_parm_order ();
		  declare_parm_level (0); ;
    break;}
case 380:
#line 2105 "c-parse.y"
#line 2114 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
		  parmlist_tags_warning ();
		  poplevel (0, 0, 0); ;
    break;}
case 382:
#line 2113 "c-parse.y"
#line 2122 "c-parse.y"
{ tree parm;
		  if (pedantic)
		    pedwarn ("ANSI C forbids forward parameter declarations");
@@ -3665,19 +3676,19 @@
		  clear_parm_order (); ;
    break;}
case 383:
#line 2121 "c-parse.y"
#line 2130 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 384:
#line 2123 "c-parse.y"
#line 2132 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
    break;}
case 385:
#line 2129 "c-parse.y"
#line 2138 "c-parse.y"
{ yyval.ttype = get_parm_info (0); ;
    break;}
case 386:
#line 2131 "c-parse.y"
#line 2140 "c-parse.y"
{ yyval.ttype = get_parm_info (0);
		  /* Gcc used to allow this as an extension.  However, it does
		     not work for all targets, and thus has been disabled.
@@ -3689,23 +3700,23 @@
		;
    break;}
case 387:
#line 2141 "c-parse.y"
#line 2150 "c-parse.y"
{ yyval.ttype = get_parm_info (1); ;
    break;}
case 388:
#line 2143 "c-parse.y"
#line 2152 "c-parse.y"
{ yyval.ttype = get_parm_info (0); ;
    break;}
case 389:
#line 2148 "c-parse.y"
#line 2157 "c-parse.y"
{ push_parm_decl (yyvsp[0].ttype); ;
    break;}
case 390:
#line 2150 "c-parse.y"
#line 2159 "c-parse.y"
{ push_parm_decl (yyvsp[0].ttype); ;
    break;}
case 391:
#line 2157 "c-parse.y"
#line 2166 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
							 yyvsp[-1].ttype),
					build_tree_list (prefix_attributes,
@@ -3716,7 +3727,7 @@
		  resume_momentary (yyvsp[-2].itype); ;
    break;}
case 392:
#line 2166 "c-parse.y"
#line 2175 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
							 yyvsp[-1].ttype),
					build_tree_list (prefix_attributes,
@@ -3727,7 +3738,7 @@
		  resume_momentary (yyvsp[-2].itype); ;
    break;}
case 393:
#line 2175 "c-parse.y"
#line 2184 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
							 yyvsp[-1].ttype),
					build_tree_list (prefix_attributes,
@@ -3738,7 +3749,7 @@
		  resume_momentary (yyvsp[-2].itype); ;
    break;}
case 394:
#line 2184 "c-parse.y"
#line 2193 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
							 yyvsp[-1].ttype),
					build_tree_list (prefix_attributes,
@@ -3749,7 +3760,7 @@
		  resume_momentary (yyvsp[-2].itype);  ;
    break;}
case 395:
#line 2194 "c-parse.y"
#line 2203 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
							 yyvsp[-1].ttype),
					build_tree_list (prefix_attributes,
@@ -3760,19 +3771,19 @@
		  resume_momentary (yyvsp[-2].itype);  ;
    break;}
case 396:
#line 2208 "c-parse.y"
#line 2217 "c-parse.y"
{ pushlevel (0);
		  clear_parm_order ();
		  declare_parm_level (1); ;
    break;}
case 397:
#line 2212 "c-parse.y"
#line 2221 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
		  parmlist_tags_warning ();
		  poplevel (0, 0, 0); ;
    break;}
case 399:
#line 2220 "c-parse.y"
#line 2229 "c-parse.y"
{ tree t;
		  for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
		    if (TREE_VALUE (t) == NULL_TREE)
@@ -3780,23 +3791,23 @@
		  yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 400:
#line 2230 "c-parse.y"
#line 2239 "c-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 401:
#line 2232 "c-parse.y"
#line 2241 "c-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 402:
#line 2238 "c-parse.y"
#line 2247 "c-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 403:
#line 2240 "c-parse.y"
#line 2249 "c-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 404:
#line 2245 "c-parse.y"
#line 2254 "c-parse.y"
{ yyval.itype = SAVE_WARN_FLAGS();
                  pedantic = 0;
                  warn_pointer_arith = 0; ;
@@ -4027,5 +4038,5 @@
    }
  return 1;
}
#line 2250 "c-parse.y"
#line 2259 "c-parse.y"

diff --git a/gcc/gcc/c-parse.in b/gcc/gcc/c-parse.in
index f8cac19..e203f19 100644
--- a/gcc/gcc/c-parse.in
+++ b/gcc/gcc/c-parse.in
@@ -28,10 +28,10 @@
   written by AT&T, but I have never seen it.  */

ifobjc
%expect 66
%expect 73
end ifobjc
ifc
%expect 51
%expect 52

/* These are the 23 conflicts you should get in parse.output;
   the state numbers may vary if minor changes in the grammar are made.
@@ -1605,12 +1605,21 @@
		  prefix_attributes = TREE_PURPOSE (declspec_stack);
		  declspec_stack = TREE_CHAIN (declspec_stack);
		  resume_momentary ($2); }
	| typed_typespecs
		{ if (pedantic)
		    pedwarn ("ANSI C forbids member declarations with no members");
		  shadow_tag($1);
		  $$ = NULL_TREE; }
	| nonempty_type_quals setspecs components
	| typed_typespecs setspecs save_filename save_lineno maybe_attribute
		{
		  /* Support for unnamed structs or unions as members of 
		     structs or unions (which is [a] useful and [b] supports 
		     MS P-SDK).  */
		  if (pedantic)
		    pedwarn ("ANSI C doesn't support unnamed structs/unions");

		  $$ = grokfield($3, $4, NULL, current_declspecs, NULL_TREE);
		  current_declspecs = TREE_VALUE (declspec_stack);
		  prefix_attributes = TREE_PURPOSE (declspec_stack);
		  declspec_stack = TREE_CHAIN (declspec_stack);
		  resume_momentary ($2);
		}
    	| nonempty_type_quals setspecs components
		{ $$ = $3;
		  current_declspecs = TREE_VALUE (declspec_stack);
		  prefix_attributes = TREE_PURPOSE (declspec_stack);
diff --git a/gcc/gcc/c-parse.y b/gcc/gcc/c-parse.y
index 47c37e2..40d0ea6 100644
--- a/gcc/gcc/c-parse.y
+++ b/gcc/gcc/c-parse.y
@@ -28,7 +28,7 @@
/* To whomever it may concern: I have heard that such a thing was once
   written by AT&T, but I have never seen it.  */

%expect 51
%expect 52

/* These are the 23 conflicts you should get in parse.output;
   the state numbers may vary if minor changes in the grammar are made.
@@ -1414,12 +1414,21 @@
		  prefix_attributes = TREE_PURPOSE (declspec_stack);
		  declspec_stack = TREE_CHAIN (declspec_stack);
		  resume_momentary ($2); }
	| typed_typespecs
		{ if (pedantic)
		    pedwarn ("ANSI C forbids member declarations with no members");
		  shadow_tag($1);
		  $$ = NULL_TREE; }
	| nonempty_type_quals setspecs components
	| typed_typespecs setspecs save_filename save_lineno maybe_attribute
		{
		  /* Support for unnamed structs or unions as members of 
		     structs or unions (which is [a] useful and [b] supports 
		     MS P-SDK).  */
		  if (pedantic)
		    pedwarn ("ANSI C doesn't support unnamed structs/unions");

		  $$ = grokfield($3, $4, NULL, current_declspecs, NULL_TREE);
		  current_declspecs = TREE_VALUE (declspec_stack);
		  prefix_attributes = TREE_PURPOSE (declspec_stack);
		  declspec_stack = TREE_CHAIN (declspec_stack);
		  resume_momentary ($2);
		}
    | nonempty_type_quals setspecs components
		{ $$ = $3;
		  current_declspecs = TREE_VALUE (declspec_stack);
		  prefix_attributes = TREE_PURPOSE (declspec_stack);
diff --git a/gcc/gcc/cp/call.c b/gcc/gcc/cp/call.c
index a931500..3b1be1b 100644
--- a/gcc/gcc/cp/call.c
+++ b/gcc/gcc/cp/call.c
@@ -42,7 +42,6 @@
static tree build_new_method_call PROTO((tree, tree, tree, tree, int));

static tree build_field_call PROTO((tree, tree, tree, tree));
static tree find_scoped_type PROTO((tree, tree, tree));
static struct z_candidate * tourney PROTO((struct z_candidate *));
static int joust PROTO((struct z_candidate *, struct z_candidate *, int));
static int compare_ics PROTO((tree, tree));
@@ -162,130 +161,6 @@
    }

  return NULL_TREE;
}

static tree
find_scoped_type (type, inner_name, inner_types)
     tree type, inner_name, inner_types;
{
  tree tags = CLASSTYPE_TAGS (type);

  while (tags)
    {
      /* The TREE_PURPOSE of an enum tag (which becomes a member of the
	 enclosing class) is set to the name for the enum type.  So, if
	 inner_name is `bar', and we strike `baz' for `enum bar { baz }',
	 then this test will be true.  */
      if (TREE_PURPOSE (tags) == inner_name)
	{
	  if (inner_types == NULL_TREE)
	    return TYPE_MAIN_DECL (TREE_VALUE (tags));
	  return resolve_scope_to_name (TREE_VALUE (tags), inner_types);
	}
      tags = TREE_CHAIN (tags);
    }

  /* Look for a TYPE_DECL.  */
  for (tags = TYPE_FIELDS (type); tags; tags = TREE_CHAIN (tags))
    if (TREE_CODE (tags) == TYPE_DECL && DECL_NAME (tags) == inner_name)
      {
	/* Code by raeburn.  */
	if (inner_types == NULL_TREE)
	  return tags;
	return resolve_scope_to_name (TREE_TYPE (tags), inner_types);
      }

  return NULL_TREE;
}

/* Resolve an expression NAME1::NAME2::...::NAMEn to
   the name that names the above nested type.  INNER_TYPES
   is a chain of nested type names (held together by SCOPE_REFs);
   OUTER_TYPE is the type we know to enclose INNER_TYPES.
   Returns NULL_TREE if there is an error.  */

tree
resolve_scope_to_name (outer_type, inner_stuff)
     tree outer_type, inner_stuff;
{
  register tree tmp;
  tree inner_name, inner_type;

  if (outer_type == NULL_TREE && current_class_type != NULL_TREE)
    {
      /* We first try to look for a nesting in our current class context,
         then try any enclosing classes.  */
      tree type = current_class_type;
      
      while (type && (TREE_CODE (type) == RECORD_TYPE
		      || TREE_CODE (type) == UNION_TYPE))
        {
          tree rval = resolve_scope_to_name (type, inner_stuff);

	  if (rval != NULL_TREE)
	    return rval;
	  type = DECL_CONTEXT (TYPE_MAIN_DECL (type));
	}
    }

  if (TREE_CODE (inner_stuff) == SCOPE_REF)
    {
      inner_name = TREE_OPERAND (inner_stuff, 0);
      inner_type = TREE_OPERAND (inner_stuff, 1);
    }
  else
    {
      inner_name = inner_stuff;
      inner_type = NULL_TREE;
    }

  if (outer_type == NULL_TREE)
    {
      tree x;
      /* If we have something that's already a type by itself,
	 use that.  */
      if (IDENTIFIER_HAS_TYPE_VALUE (inner_name))
	{
	  if (inner_type)
	    return resolve_scope_to_name (IDENTIFIER_TYPE_VALUE (inner_name),
					  inner_type);
	  return inner_name;
	}
      
      x = lookup_name (inner_name, 0);

      if (x && TREE_CODE (x) == NAMESPACE_DECL)
	{
	  x = lookup_namespace_name (x, inner_type);
	  return x;
	}
      return NULL_TREE;
    }

  if (! IS_AGGR_TYPE (outer_type))
    return NULL_TREE;

  /* Look for member classes or enums.  */
  tmp = find_scoped_type (outer_type, inner_name, inner_type);

  /* If it's not a type in this class, then go down into the
     base classes and search there.  */
  if (! tmp && TYPE_BINFO (outer_type))
    {
      tree binfos = TYPE_BINFO_BASETYPES (outer_type);
      int i, n_baselinks = binfos ? TREE_VEC_LENGTH (binfos) : 0;

      for (i = 0; i < n_baselinks; i++)
	{
	  tree base_binfo = TREE_VEC_ELT (binfos, i);
	  tmp = resolve_scope_to_name (BINFO_TYPE (base_binfo), inner_stuff);
	  if (tmp)
	    return tmp;
	}
      tmp = NULL_TREE;
    }

  return tmp;
}

/* Returns nonzero iff the destructor name specified in NAME
diff --git a/gcc/gcc/cp/class.c b/gcc/gcc/cp/class.c
index 74808c5..729d094 100644
--- a/gcc/gcc/cp/class.c
+++ b/gcc/gcc/cp/class.c
@@ -1380,7 +1380,7 @@
  tree prev = 0;
  if (DECL_NAME (field) == 0)
    {
      if (TREE_CODE (TREE_TYPE (field)) != UNION_TYPE)
      if (! ANON_AGGR_TYPE_P (TREE_TYPE (field)))
	return fields;

      for (x = TYPE_FIELDS (TREE_TYPE (field)); x; x = TREE_CHAIN (x))
@@ -1393,7 +1393,7 @@
	{
	  if (DECL_NAME (x) == 0)
	    {
	      if (TREE_CODE (TREE_TYPE (x)) != UNION_TYPE)
	      if (! ANON_AGGR_TYPE_P (TREE_TYPE (x)))
		continue;
	      TYPE_FIELDS (TREE_TYPE (x))
		= delete_duplicate_fields_1 (field, TYPE_FIELDS (TREE_TYPE (x)));
@@ -3297,7 +3297,7 @@
	continue;

      if (DECL_NAME (field) == NULL_TREE
	  && TREE_CODE (TREE_TYPE (field)) == UNION_TYPE)
	  && ANON_AGGR_TYPE_P (TREE_TYPE (field)))
	{
	  tree* uelt = &TYPE_FIELDS (TREE_TYPE (field));
	  for (; *uelt; uelt = &TREE_CHAIN (*uelt))
@@ -3479,9 +3479,6 @@
  int has_pointers = 0;
  tree inline_friends;

  if (warn_anon && code != UNION_TYPE && ANON_AGGRNAME_P (TYPE_IDENTIFIER (t)))
    pedwarn ("anonymous class type not used to declare any objects");

  if (TYPE_SIZE (t))
    {
      if (IS_AGGR_TYPE (t))
@@ -3870,8 +3867,7 @@
	  while (TREE_CODE (type) == ARRAY_TYPE)
	    type = TREE_TYPE (type);

	  if (TYPE_LANG_SPECIFIC (type) && ! ANON_UNION_P (x)
	      && ! TYPE_PTRMEMFUNC_P (type))
 	  if (CLASS_TYPE_P (type) && ! ANON_AGGR_TYPE_P (type))
	    {
	      /* Never let anything with uninheritable virtuals
		 make it through without complaint.  */
diff --git a/gcc/gcc/cp/cp-tree.h b/gcc/gcc/cp/cp-tree.h
index 55f7097..da32787 100644
--- a/gcc/gcc/cp/cp-tree.h
+++ b/gcc/gcc/cp/cp-tree.h
@@ -704,7 +704,7 @@
      unsigned const_needs_init : 1;
      unsigned ref_needs_init : 1;
      unsigned has_const_assign_ref : 1;
      unsigned anon_union : 1;
      unsigned anon_aggr : 1;

      unsigned has_nonpublic_ctor : 2;
      unsigned has_nonpublic_assign_ref : 2;
@@ -1805,16 +1805,14 @@
   Just used to communicate formatting information to dbxout.c.  */
#define DECL_OPERATOR(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.operator_attr)

#define ANON_UNION_P(NODE) (DECL_NAME (NODE) == 0)

/* Nonzero if TYPE is an anonymous union type.  We have to use a flag for
   this because "A union for which objects or pointers are declared is not
   an anonymous union" [class.union].  */
#define ANON_UNION_TYPE_P(NODE)				\
/* Nonzero if TYPE is an anonymous union or struct type.  We have to use a
   flag for this because "A union for which objects or pointers are
   declared is not an anonymous union" [class.union].  */
#define ANON_AGGR_TYPE_P(NODE)				\
  (TYPE_LANG_SPECIFIC (NODE)				\
   && TYPE_LANG_SPECIFIC (NODE)->type_flags.anon_union)
#define SET_ANON_UNION_TYPE_P(NODE)				\
  (TYPE_LANG_SPECIFIC (NODE)->type_flags.anon_union = 1)
   && TYPE_LANG_SPECIFIC (NODE)->type_flags.anon_aggr)
#define SET_ANON_AGGR_TYPE_P(NODE)			\
  (TYPE_LANG_SPECIFIC (NODE)->type_flags.anon_aggr = 1)

#define UNKNOWN_TYPE LANG_TYPE

@@ -2938,7 +2936,7 @@
extern void replace_defarg			PROTO((tree, tree));
extern void print_other_binding_stack		PROTO((struct binding_level *));
extern void revert_static_member_fn             PROTO((tree*, tree*, tree*));
extern void fixup_anonymous_union               PROTO((tree));
extern void fixup_anonymous_aggr               PROTO((tree));
extern int check_static_variable_definition     PROTO((tree, tree));
extern void push_local_binding                  PROTO((tree, tree, int));
extern int push_class_binding                   PROTO((tree, tree));
diff --git a/gcc/gcc/cp/decl.c b/gcc/gcc/cp/decl.c
index 995c5fd..5e5a573 100644
--- a/gcc/gcc/cp/decl.c
+++ b/gcc/gcc/cp/decl.c
@@ -4381,7 +4381,7 @@
      if (TREE_CODE (x) == TYPE_DECL)
	set_identifier_type_value (name, TREE_TYPE (x));
    }
  else if (ANON_UNION_TYPE_P (TREE_TYPE (x)))
  else if (ANON_AGGR_TYPE_P (TREE_TYPE (x)))
    {
      tree f;

@@ -7067,7 +7067,7 @@
   union type.)  */

void
fixup_anonymous_union (t)
fixup_anonymous_aggr (t)
     tree t;
{
  tree *q;
@@ -7155,12 +7155,15 @@
  /* Check for an anonymous union.  We're careful
     accessing TYPE_IDENTIFIER because some built-in types, like
     pointer-to-member types, do not have TYPE_NAME.  */
  else if (t && TREE_CODE (t) == UNION_TYPE
  else if (t && IS_AGGR_TYPE_CODE (TREE_CODE (t))
	   && TYPE_NAME (t)
	   && ANON_AGGRNAME_P (TYPE_IDENTIFIER (t)))
    {
      /* Anonymous unions are objects, so they can have specifiers.  */;
      SET_ANON_UNION_TYPE_P (t);
      SET_ANON_AGGR_TYPE_P (t);

      if (TREE_CODE (t) != UNION_TYPE && pedantic && ! in_system_header)
	pedwarn ("ISO C++ prohibits anonymous structs");
    }

  else if (ob_modifier)
@@ -7206,9 +7209,9 @@
     union { ... } ;
     because there is no declarator after the union, the parser
     sends that declaration here.  */
  if (t && ANON_UNION_TYPE_P (t))
  if (t && ANON_AGGR_TYPE_P (t))
    {
      fixup_anonymous_union (t);
      fixup_anonymous_aggr (t);

      if (TYPE_FIELDS (t))
	{
@@ -10141,7 +10144,7 @@
  /* Static anonymous unions are dealt with here.  */
  if (staticp && decl_context == TYPENAME
      && TREE_CODE (declspecs) == TREE_LIST
      && ANON_UNION_TYPE_P (TREE_VALUE (declspecs)))
      && ANON_AGGR_TYPE_P (TREE_VALUE (declspecs)))
    decl_context = FIELD;

  /* Give error if `const,' `volatile,' `inline,' `friend,' or `virtual'
diff --git a/gcc/gcc/cp/decl2.c b/gcc/gcc/cp/decl2.c
index 53db85f..f22c595 100644
--- a/gcc/gcc/cp/decl2.c
+++ b/gcc/gcc/cp/decl2.c
@@ -931,10 +931,10 @@

  /* The only case where we need to do anything additional here is an
     anonymous union field, e.g.: `struct S { union { int i; }; };'.  */
  if (t == NULL_TREE || !ANON_UNION_TYPE_P (t))
  if (t == NULL_TREE || !ANON_AGGR_TYPE_P (t))
    return;

  fixup_anonymous_union (t);
  fixup_anonymous_aggr (t);
  finish_member_declaration (build_lang_field_decl (FIELD_DECL,
						    NULL_TREE,
						    t)); 
@@ -2239,6 +2239,11 @@
  tree main_decl = NULL_TREE;
  tree field;

  /* Rather than write the code to handle the non-union case,
     just give an error.  */
  if (TREE_CODE (type) != UNION_TYPE)
    error ("anonymous struct not inside named type");

  for (field = TYPE_FIELDS (type); 
       field != NULL_TREE; 
       field = TREE_CHAIN (field))
@@ -2260,7 +2265,7 @@
	cp_pedwarn_at ("protected member `%#D' in anonymous union", field);

      if (DECL_NAME (field) == NULL_TREE
	  && TREE_CODE (TREE_TYPE (field)) == UNION_TYPE)
	  && ANON_AGGR_TYPE_P (TREE_TYPE (field)))
	{
	  decl = build_anon_union_vars (field, elems, static_p, external_p);
	  if (!decl)
@@ -2292,7 +2297,7 @@
	TREE_ASM_WRITTEN (decl) = 1;
      
      if (DECL_NAME (field) == NULL_TREE
	  && TREE_CODE (TREE_TYPE (field)) == UNION_TYPE)
	  && ANON_AGGR_TYPE_P (TREE_TYPE (field)))
	/* The remainder of the processing was already done in the
	   recursive call.  */
	continue;
diff --git a/gcc/gcc/cp/init.c b/gcc/gcc/cp/init.c
index d70fc32..470d843 100644
--- a/gcc/gcc/cp/init.c
+++ b/gcc/gcc/cp/init.c
@@ -155,15 +155,24 @@

  expand_start_target_temps ();

  if (TYPE_NEEDS_CONSTRUCTING (type)
      || (init && TYPE_HAS_CONSTRUCTOR (type)))
  decl = build_component_ref (current_class_ref, name, NULL_TREE, explicit);

  /* Deal with this here, as we will get confused if we try to call the
     assignment op for an anonymous union.  This can happen in a
     synthesized copy constructor.  */
  if (ANON_AGGR_TYPE_P (type))
    {
      init = build (INIT_EXPR, type, decl, TREE_VALUE (init));
      TREE_SIDE_EFFECTS (init) = 1;
      expand_expr_stmt (init);
    }
  else if (TYPE_NEEDS_CONSTRUCTING (type)
	   || (init && TYPE_HAS_CONSTRUCTOR (type)))
    {
      /* Since `init' is already a TREE_LIST on the current_member_init_list,
	 only build it into one if we aren't already a list.  */
      if (init != NULL_TREE && TREE_CODE (init) != TREE_LIST)
	init = build_expr_list (NULL_TREE, init);

      decl = build_component_ref (current_class_ref, name, NULL_TREE, explicit);

      if (explicit
	  && TREE_CODE (type) == ARRAY_TYPE
@@ -187,7 +196,7 @@
	      /* default-initialization.  */
	      if (AGGREGATE_TYPE_P (type))
		init = build (CONSTRUCTOR, type, NULL_TREE, NULL_TREE);
	      else if (TREE_CODE (type) == REFERENCE_TYPE)
 	      else if (TREE_CODE (type) == REFERENCE_TYPE)
		{
		  cp_error ("default-initialization of `%#D', which has reference type",
			    member);
@@ -217,8 +226,6 @@
	 current_member_init_list.  */
      if (init || explicit)
	{
	  decl = build_component_ref (current_class_ref, name, NULL_TREE,
				      explicit);
	  expand_expr_stmt (build_modify_expr (decl, INIT_EXPR, init));
	}
    }
@@ -276,16 +283,13 @@
	    continue;
	  name = TREE_PURPOSE (x);

#if 0

	  /* This happens in templates, since the IDENTIFIER is replaced
             with the COMPONENT_REF in tsubst_expr.  */
	  field = (TREE_CODE (name) == COMPONENT_REF
		   ? TREE_OPERAND (name, 1) : IDENTIFIER_CLASS_VALUE (name));
#else
	  /* Let's find out when this happens.  */
	  my_friendly_assert (TREE_CODE (name) != COMPONENT_REF, 348);
	  field = IDENTIFIER_CLASS_VALUE (name);
#endif
	  if (TREE_CODE (name) == IDENTIFIER_NODE)
	    field = IDENTIFIER_CLASS_VALUE (name);
	  else
	    {
	      my_friendly_assert (TREE_CODE (name) == FIELD_DECL, 348); 
	      field = name;
	    }

	  /* If one member shadows another, get the outermost one.  */
	  if (TREE_CODE (field) == TREE_LIST)
@@ -701,15 +705,8 @@
	  init = TREE_VALUE (mem_init_list);
	  from_init_list = 1;

#if 0

	  if (TREE_CODE (name) == COMPONENT_REF)
	    name = DECL_NAME (TREE_OPERAND (name, 1));
#else
	  /* Also see if it's ever a COMPONENT_REF here.  If it is, we
	     need to do `expand_assignment (name, init, 0, 0);' and
	     a continue.  */
	  my_friendly_assert (TREE_CODE (name) != COMPONENT_REF, 349);
#endif
	  my_friendly_assert (TREE_CODE (name) == IDENTIFIER_NODE
			      || TREE_CODE (name) == FIELD_DECL, 349);
	}
      else
	{
@@ -738,9 +735,11 @@
	{
	  name = TREE_PURPOSE (mem_init_list);
	  init = TREE_VALUE (mem_init_list);
	  /* XXX: this may need the COMPONENT_REF operand 0 check if
	     it turns out we actually get them.  */
	  field = IDENTIFIER_CLASS_VALUE (name);

	  if (TREE_CODE (name) == IDENTIFIER_NODE)
	    field = IDENTIFIER_CLASS_VALUE (name);
	  else
	    field = name;

	  /* If one member shadows another, get the outermost one.  */
	  if (TREE_CODE (field) == TREE_LIST)
@@ -969,7 +968,7 @@

  /* Anonymous union members can be initialized in the first enclosing
     non-anonymous union context.  */
  while (t && ANON_UNION_TYPE_P (t))
  while (t && ANON_AGGR_TYPE_P (t))
    t = TYPE_CONTEXT (t);
  return t;
}
diff --git a/gcc/gcc/cp/method.c b/gcc/gcc/cp/method.c
index 093367d..daf7056 100644
--- a/gcc/gcc/cp/method.c
+++ b/gcc/gcc/cp/method.c
@@ -2496,18 +2496,10 @@
		continue;
	    }
	  else if ((t = TREE_TYPE (field)) != NULL_TREE
		   && ANON_UNION_TYPE_P (t)
		   && ANON_AGGR_TYPE_P (t)
		   && TYPE_FIELDS (t) != NULL_TREE)
	    {
	      do
		{
		  init = build (COMPONENT_REF, t, init, field);
		  field = largest_union_member (t);
		}
	      while ((t = TREE_TYPE (field)) != NULL_TREE
		     && ANON_UNION_TYPE_P (t)
		     && TYPE_FIELDS (t) != NULL_TREE);
	    }
	    /* Just use the field; anonymous types can't have
	       nontrivial copy ctors or assignment ops.  */;
	  else
	    continue;

@@ -2515,7 +2507,7 @@
	  init = build_tree_list (NULL_TREE, init);

	  current_member_init_list
	    = tree_cons (DECL_NAME (field), init, current_member_init_list);
	    = tree_cons (field, init, current_member_init_list);
	}
      current_member_init_list = nreverse (current_member_init_list);
      current_base_init_list = nreverse (current_base_init_list);
@@ -2604,19 +2596,10 @@
		continue;
	    }
	  else if ((t = TREE_TYPE (field)) != NULL_TREE
		   && ANON_UNION_TYPE_P (t)
		   && ANON_AGGR_TYPE_P (t)
		   && TYPE_FIELDS (t) != NULL_TREE)
	    {
	      do
		{
		  comp = build (COMPONENT_REF, t, comp, field);
		  init = build (COMPONENT_REF, t, init, field);
		  field = largest_union_member (t);
		}
	      while ((t = TREE_TYPE (field)) != NULL_TREE
		     && ANON_UNION_TYPE_P (t)
		     && TYPE_FIELDS (t) != NULL_TREE);
	    }
	    /* Just use the field; anonymous types can't have
	       nontrivial copy ctors or assignment ops.  */;
	  else
	    continue;

diff --git a/gcc/gcc/cp/pt.c b/gcc/gcc/cp/pt.c
index 0241f6a..297a650 100644
--- a/gcc/gcc/cp/pt.c
+++ b/gcc/gcc/cp/pt.c
@@ -4911,8 +4911,8 @@
  TYPE_PACKED (type) = TYPE_PACKED (pattern);
  TYPE_ALIGN (type) = TYPE_ALIGN (pattern);
  TYPE_FOR_JAVA (type) = TYPE_FOR_JAVA (pattern); /* For libjava's JArray<T> */
  if (ANON_UNION_TYPE_P (pattern))
    SET_ANON_UNION_TYPE_P (type);
  if (ANON_AGGR_TYPE_P (pattern))
    SET_ANON_AGGR_TYPE_P (type);

  /* We must copy the arguments to the permanent obstack since
     during the tsubst'ing below they may wind up in the
diff --git a/gcc/gcc/cp/ptree.c b/gcc/gcc/cp/ptree.c
index 1f17aec..502c1f0 100644
--- a/gcc/gcc/cp/ptree.c
+++ b/gcc/gcc/cp/ptree.c
@@ -79,11 +79,7 @@
      return;
    }

  if (! (TREE_CODE (node) == RECORD_TYPE
	 || TREE_CODE (node) == UNION_TYPE))
    return;

  if (!TYPE_LANG_SPECIFIC (node))
  if (! CLASS_TYPE_P (node))
    return;

  indent_to (file, indent + 3);
diff --git a/gcc/gcc/cp/search.c b/gcc/gcc/cp/search.c
index fb99f8f..7cbc3bd 100644
--- a/gcc/gcc/cp/search.c
+++ b/gcc/gcc/cp/search.c
@@ -537,7 +537,7 @@
#endif /* GATHER_STATISTICS */
      my_friendly_assert (TREE_CODE_CLASS (TREE_CODE (field)) == 'd', 0);
      if (DECL_NAME (field) == NULL_TREE
	  && TREE_CODE (TREE_TYPE (field)) == UNION_TYPE)
	  && ANON_AGGR_TYPE_P (TREE_TYPE (field)))
	{
	  tree temp = lookup_field_1 (TREE_TYPE (field), name);
	  if (temp)
@@ -613,7 +613,7 @@
     declared.  */ 
  tree context = DECL_REAL_CONTEXT (decl);

  while (TYPE_P (context) && ANON_UNION_TYPE_P (context))
  while (TYPE_P (context) && ANON_AGGR_TYPE_P (context))
    context = TYPE_CONTEXT (context);
  if (!context)
    context = global_namespace;
@@ -3059,7 +3059,7 @@
	    && TREE_CODE (fields) != USING_DECL)
	  setup_class_bindings (DECL_NAME (fields), /*type_binding_p=*/0);
	else if (TREE_CODE (fields) == FIELD_DECL
		 && ANON_UNION_TYPE_P (TREE_TYPE (fields)))
		 && ANON_AGGR_TYPE_P (TREE_TYPE (fields)))
	  dfs_push_decls (TYPE_BINFO (TREE_TYPE (fields)), data);
	  
      method_vec = (CLASS_TYPE_P (type) 
@@ -3133,7 +3133,7 @@

      TREE_USED (fields) = 0;
      if (DECL_NAME (fields) == NULL_TREE
	  && TREE_CODE (TREE_TYPE (fields)) == UNION_TYPE)
	  && ANON_AGGR_TYPE_P (TREE_TYPE (fields)))
	unuse_fields (TREE_TYPE (fields));
    }

diff --git a/gcc/gcc/cp/typeck.c b/gcc/gcc/cp/typeck.c
index 6ac54fd..f3f96b5 100644
--- a/gcc/gcc/cp/typeck.c
+++ b/gcc/gcc/cp/typeck.c
@@ -2011,7 +2011,7 @@

      /* Otherwise, it could be nested, search harder.  */
      if (DECL_NAME (field) == NULL_TREE
	  && TREE_CODE (TREE_TYPE (field)) == UNION_TYPE)
	  && ANON_AGGR_TYPE_P (TREE_TYPE (field)))
	{
	  tree subfield = lookup_anon_field (TREE_TYPE (field), type);
	  if (subfield)
@@ -2221,7 +2221,7 @@
      tree context = DECL_FIELD_CONTEXT (field);
      tree base = context;
      while (!same_type_p (base, basetype) && TYPE_NAME (base)
	     && ANON_UNION_TYPE_P (base))
	     && ANON_AGGR_TYPE_P (base))
	{
	  base = TYPE_CONTEXT (base);
	}
@@ -2251,7 +2251,7 @@
      basetype = base;
 
      /* Handle things from anon unions here...  */
      if (TYPE_NAME (context) && ANON_UNION_TYPE_P (context))
      if (TYPE_NAME (context) && ANON_AGGR_TYPE_P (context))
	{
	  tree subfield = lookup_anon_field (basetype, context);
	  tree subdatum = build_component_ref (datum, subfield,
@@ -6097,8 +6097,7 @@
	  /* Functions are not modifiable, even though they are
	     lvalues.  */
	  || TREE_CODE (TREE_TYPE (lhs)) == FUNCTION_TYPE
	  || ((TREE_CODE (lhstype) == RECORD_TYPE
	       || TREE_CODE (lhstype) == UNION_TYPE)
          || (IS_AGGR_TYPE_CODE (TREE_CODE (lhstype))
	      && C_TYPE_FIELDS_READONLY (lhstype))
	  || (TREE_CODE (lhstype) == REFERENCE_TYPE
	      && CP_TYPE_CONST_P (TREE_TYPE (lhstype)))))
@@ -7280,8 +7279,7 @@
	{
	  tree type = TREE_TYPE (o[i]);
	  if (CP_TYPE_CONST_P (type)
	      || ((TREE_CODE (type) == RECORD_TYPE
		   || TREE_CODE (type) == UNION_TYPE)
              || (IS_AGGR_TYPE_CODE (TREE_CODE (type))
		  && C_TYPE_FIELDS_READONLY (type)))
	    readonly_error (o[i], "modification by `asm'", 1);
	}
diff --git a/gcc/gcc/cp/typeck2.c b/gcc/gcc/cp/typeck2.c
index 3c0a1c4..bc42149 100644
--- a/gcc/gcc/cp/typeck2.c
+++ b/gcc/gcc/cp/typeck2.c
@@ -834,7 +834,7 @@
      return error_mark_node;
    }

  if (code == ARRAY_TYPE || code == RECORD_TYPE || code == UNION_TYPE)
  if (code == ARRAY_TYPE || IS_AGGR_TYPE_CODE (code))
    {
      if (raw_constructor && TYPE_NON_AGGREGATE_CLASS (type))
	{
diff --git a/gcc/gcc/objc/objc-parse.y b/gcc/gcc/objc/objc-parse.y
index 1ad1321..a264045 100644
--- a/gcc/gcc/objc/objc-parse.y
+++ b/gcc/gcc/objc/objc-parse.y
@@ -28,7 +28,7 @@
/* To whomever it may concern: I have heard that such a thing was once
   written by AT&T, but I have never seen it.  */

%expect 66
%expect 73

%{
#include "config.h"
@@ -1510,12 +1510,21 @@
		  prefix_attributes = TREE_PURPOSE (declspec_stack);
		  declspec_stack = TREE_CHAIN (declspec_stack);
		  resume_momentary ($2); }
	| typed_typespecs
		{ if (pedantic)
		    pedwarn ("ANSI C forbids member declarations with no members");
		  shadow_tag($1);
		  $$ = NULL_TREE; }
	| nonempty_type_quals setspecs components
	| typed_typespecs setspecs save_filename save_lineno maybe_attribute
		{
		  /* Support for unnamed structs or unions as members of 
		     structs or unions (which is [a] useful and [b] supports 
		     MS P-SDK).  */
		  if (pedantic)
		    pedwarn ("ANSI C doesn't support unnamed structs/unions");

		  $$ = grokfield($3, $4, NULL, current_declspecs, NULL_TREE);
		  current_declspecs = TREE_VALUE (declspec_stack);
		  prefix_attributes = TREE_PURPOSE (declspec_stack);
		  declspec_stack = TREE_CHAIN (declspec_stack);
		  resume_momentary ($2);
		}
    | nonempty_type_quals setspecs components
		{ $$ = $3;
		  current_declspecs = TREE_VALUE (declspec_stack);
		  prefix_attributes = TREE_PURPOSE (declspec_stack);