Revert "Add support for parsing ESSL3 invariant qualifiers"

Build breaks in GPU FYI bots.

BUG=angleproject:987

This reverts commit 4008879357159c7850cf105f2ae842bc68dd3c18.

Change-Id: Ia88ad302c403c65516c050eb7741316b5097bcfb
Reviewed-on: https://chromium-review.googlesource.com/269847
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/compiler/translator/ParseContext.cpp b/src/compiler/translator/ParseContext.cpp
index 89ae6ff..aa347db 100644
--- a/src/compiler/translator/ParseContext.cpp
+++ b/src/compiler/translator/ParseContext.cpp
@@ -12,7 +12,6 @@
 #include "compiler/preprocessor/SourceLocation.h"
 #include "compiler/translator/glslang.h"
 #include "compiler/translator/ValidateSwitch.h"
-#include "compiler/translator/util.h"
 
 ///////////////////////////////////////////////////////////////////////
 //
@@ -970,15 +969,6 @@
     return false;
 }
 
-void TParseContext::es3InvariantErrorCheck(const TQualifier qualifier, const TSourceLoc &invariantLocation)
-{
-    if (!sh::IsVaryingOut(qualifier) && qualifier != EvqFragmentOut)
-    {
-        error(invariantLocation, "Only out variables can be invariant.", "invariant");
-        recover();
-    }
-}
-
 bool TParseContext::supportsExtension(const char* extension)
 {
     const TExtensionBehavior& extbehavior = extensionBehavior();
diff --git a/src/compiler/translator/ParseContext.h b/src/compiler/translator/ParseContext.h
index e08e50a..6952a08 100644
--- a/src/compiler/translator/ParseContext.h
+++ b/src/compiler/translator/ParseContext.h
@@ -110,7 +110,6 @@
     bool singleDeclarationErrorCheck(TPublicType &publicType, const TSourceLoc &identifierLocation);
     bool layoutLocationErrorCheck(const TSourceLoc& location, const TLayoutQualifier &layoutQualifier);
     bool functionCallLValueErrorCheck(const TFunction *fnCandidate, TIntermAggregate *);
-    void es3InvariantErrorCheck(const TQualifier qualifier, const TSourceLoc &invariantLocation);
 
     const TPragma& pragma() const { return directiveHandler.pragma(); }
     const TExtensionBehavior& extensionBehavior() const { return directiveHandler.extensionBehavior(); }
diff --git a/src/compiler/translator/ShaderVars.cpp b/src/compiler/translator/ShaderVars.cpp
index 207ae22..590655f 100644
--- a/src/compiler/translator/ShaderVars.cpp
+++ b/src/compiler/translator/ShaderVars.cpp
@@ -303,11 +303,11 @@
             isInvariant == other.isInvariant);
 }
 
-bool Varying::isSameVaryingAtLinkTime(const Varying &other, int shaderVersion) const
+bool Varying::isSameVaryingAtLinkTime(const Varying &other) const
 {
     return (ShaderVariable::isSameVariableAtLinkTime(other, false) &&
             interpolation == other.interpolation &&
-            (shaderVersion >= 300 || isInvariant == other.isInvariant));
+            isInvariant == other.isInvariant);
 }
 
 InterfaceBlock::InterfaceBlock()
diff --git a/src/compiler/translator/glslang.y b/src/compiler/translator/glslang.y
index fef2e08..298cf56 100644
--- a/src/compiler/translator/glslang.y
+++ b/src/compiler/translator/glslang.y
@@ -1012,16 +1012,6 @@
         $$.setBasic(EbtVoid, $2.qualifier, @2);
         $$.layoutQualifier = $1;
     }
-    | INVARIANT storage_qualifier {
-        context->es3InvariantErrorCheck($2.qualifier, @1);
-        $$.setBasic(EbtVoid, $2.qualifier, @2);
-        $$.invariant = true;
-    }
-    | INVARIANT interpolation_qualifier storage_qualifier {
-        context->es3InvariantErrorCheck($3.qualifier, @1);
-        $$ = context->joinInterpolationQualifiers(@2, $2.qualifier, @3, $3.qualifier);
-        $$.invariant = true;
-    }
     ;
 
 storage_qualifier
diff --git a/src/compiler/translator/glslang_tab.cpp b/src/compiler/translator/glslang_tab.cpp
index 75f5644..52d8409 100644
--- a/src/compiler/translator/glslang_tab.cpp
+++ b/src/compiler/translator/glslang_tab.cpp
@@ -623,18 +623,18 @@
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  116
+#define YYFINAL  114
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2516
+#define YYLAST   2523
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  128
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  94
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  275
+#define YYNRULES  273
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  417
+#define YYNSTATES  414
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
@@ -706,21 +706,21 @@
      760,   781,   791,   819,   824,   834,   839,   849,   852,   855,
      858,   864,   871,   874,   878,   882,   887,   892,   899,   903,
      907,   911,   916,   921,   925,   932,   942,   948,   951,   957,
-     963,   970,   979,   989,   997,  1000,  1007,  1011,  1015,  1020,
-    1028,  1031,  1035,  1039,  1048,  1057,  1065,  1075,  1087,  1090,
-    1093,  1099,  1106,  1109,  1115,  1118,  1121,  1127,  1130,  1135,
-    1150,  1154,  1158,  1162,  1166,  1170,  1175,  1180,  1185,  1190,
+     963,   970,   979,   989,   997,  1000,  1007,  1011,  1018,  1021,
+    1025,  1029,  1038,  1047,  1055,  1065,  1077,  1080,  1083,  1089,
+    1096,  1099,  1105,  1108,  1111,  1117,  1120,  1125,  1140,  1144,
+    1148,  1152,  1156,  1160,  1165,  1170,  1175,  1180,  1185,  1190,
     1195,  1200,  1205,  1210,  1215,  1220,  1225,  1230,  1235,  1240,
-    1245,  1250,  1255,  1260,  1265,  1270,  1275,  1279,  1283,  1287,
-    1291,  1295,  1299,  1303,  1307,  1311,  1315,  1319,  1323,  1327,
-    1331,  1335,  1343,  1351,  1355,  1368,  1368,  1371,  1371,  1377,
-    1380,  1396,  1399,  1408,  1412,  1418,  1425,  1440,  1444,  1448,
-    1449,  1455,  1456,  1457,  1458,  1459,  1460,  1461,  1465,  1466,
-    1466,  1466,  1476,  1477,  1481,  1481,  1482,  1482,  1487,  1490,
-    1500,  1503,  1509,  1510,  1514,  1522,  1526,  1533,  1533,  1540,
-    1543,  1550,  1555,  1570,  1570,  1575,  1575,  1582,  1582,  1590,
-    1593,  1599,  1602,  1608,  1612,  1619,  1622,  1625,  1628,  1631,
-    1640,  1644,  1651,  1654,  1660,  1660
+    1245,  1250,  1255,  1260,  1265,  1269,  1273,  1277,  1281,  1285,
+    1289,  1293,  1297,  1301,  1305,  1309,  1313,  1317,  1321,  1325,
+    1333,  1341,  1345,  1358,  1358,  1361,  1361,  1367,  1370,  1386,
+    1389,  1398,  1402,  1408,  1415,  1430,  1434,  1438,  1439,  1445,
+    1446,  1447,  1448,  1449,  1450,  1451,  1455,  1456,  1456,  1456,
+    1466,  1467,  1471,  1471,  1472,  1472,  1477,  1480,  1490,  1493,
+    1499,  1500,  1504,  1512,  1516,  1523,  1523,  1530,  1533,  1540,
+    1545,  1560,  1560,  1565,  1565,  1572,  1572,  1580,  1583,  1589,
+    1592,  1598,  1602,  1609,  1612,  1615,  1618,  1621,  1630,  1634,
+    1641,  1644,  1650,  1650
 };
 #endif
 
@@ -809,12 +809,12 @@
 };
 # endif
 
-#define YYPACT_NINF -361
+#define YYPACT_NINF -347
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-361)))
+  (!!((Yystate) == (-347)))
 
-#define YYTABLE_NINF -235
+#define YYTABLE_NINF -233
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -823,48 +823,48 @@
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    2154,   224,  -361,  -361,  -361,   130,  -361,  -361,  -361,  -361,
-    -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,
-    -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,
-    -361,  -361,  -361,  -361,  -361,  -361,  -361,   145,  -361,  -361,
-     -46,  -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,
-    -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,   -82,
-    -361,  -361,   -68,   -41,   -45,     9,     7,  -361,   117,    16,
-    1173,  -361,  -361,  2439,    16,  -361,    -9,  -361,  2079,  -361,
-    -361,  -361,  -361,    16,  -361,  2439,  -361,  -361,  -361,  -361,
-    -361,   -31,    23,  -361,    11,  -361,    63,  -361,  -361,  -361,
-    -361,  -361,  2303,   168,   120,  -361,    13,   -66,  -361,    31,
-    -361,  2229,  -361,  -361,  -361,  1243,  -361,  -361,  -361,    56,
-    2229,  -361,    17,   -50,  -361,   401,  -361,  -361,  -361,  -361,
-     120,  2303,   -18,  -361,  1341,  1632,  -361,   179,  2303,   120,
-    1824,  -361,    70,  -361,  -361,  -361,  -361,  -361,  1632,  1632,
-    1632,  -361,  -361,  -361,  -361,  -361,  -361,  -361,    22,  -361,
-    -361,  -361,   101,   -29,  1727,   114,  -361,  1632,    96,   -97,
-     128,   -54,   111,   118,   102,   115,   154,   153,   -69,  -361,
-     140,  -361,  -361,  1909,  2229,   124,  -361,    23,   134,   136,
-    -361,   147,   149,   143,  1439,   155,  1632,   148,   157,   160,
-    -361,  -361,   184,  -361,  -361,    52,  -361,   -68,   158,  -361,
-    -361,  -361,  -361,   517,  -361,  -361,  -361,  -361,  -361,  -361,
-     166,  -361,  -361,  1534,  1632,   150,   159,  -361,  -361,   120,
-     167,    61,  -361,   -62,  -361,  -361,  -361,    -5,  -361,  -361,
-    1632,  2371,  -361,  -361,  1632,   185,  -361,  -361,  -361,  1632,
-    1632,  1632,  1632,  1632,  1632,  1632,  1632,  1632,  1632,  1632,
-    1632,  1632,  1632,  1632,  1632,  1632,  1632,  1632,  1632,  -361,
-    -361,  1994,  -361,  -361,  -361,  -361,  -361,   181,  -361,  1632,
-    -361,  -361,    67,  1632,   180,  -361,  -361,  -361,   633,  -361,
-    -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,
-    1632,  1632,  -361,  -361,  -361,  1632,   178,   186,  -361,  1632,
-     182,    68,  1632,   120,  -361,   -71,  -361,  -361,   187,   188,
-    -361,   192,  -361,  -361,  -361,  -361,  -361,    96,    96,   -97,
-     -97,   128,   128,   128,   128,   -54,   -54,   111,   118,   102,
-     115,   154,   153,   113,  -361,   242,    11,   865,   981,     4,
-    -361,    18,  -361,  1078,   633,  -361,  -361,   194,  1632,   189,
-    -361,  1632,  -361,   196,  -361,  1632,  -361,  -361,  1632,   200,
-    -361,  -361,  -361,  -361,  1078,   181,  -361,   188,   120,  2303,
-     201,   198,  -361,  -361,  1632,  -361,  -361,   202,  -361,  1632,
-    -361,   191,   203,   293,  -361,   204,   205,   749,  -361,  -361,
-     197,    60,  1632,   749,   181,  -361,  1632,  -361,  -361,  -361,
-    -361,   199,   188,  -361,  -361,  -361,  -361
+    2161,    -4,  -347,  -347,  -347,   142,  -347,  -347,  -347,  -347,
+    -347,  -347,  -347,  -347,  -347,  -347,  -347,  -347,  -347,  -347,
+    -347,  -347,  -347,  -347,  -347,  -347,  -347,  -347,  -347,  -347,
+    -347,  -347,  -347,  -347,  -347,  -347,  -347,    -3,  -347,  -347,
+     -58,  -347,  -347,  -347,  -347,  -347,  -347,  -347,  -347,  -347,
+    -347,  -347,  -347,  -347,  -347,  -347,  -347,  -347,  -347,   -57,
+    -347,  -347,   -38,   -63,   -55,     3,   -50,  -347,    84,    11,
+    1180,  -347,  -347,  2446,    11,  -347,   -40,  -347,  2086,  -347,
+    -347,  -347,  -347,  2446,  -347,  -347,  -347,  -347,  -347,   -23,
+      31,  -347,    35,  -347,    78,  -347,  -347,  -347,  -347,  -347,
+    2310,   132,   106,  -347,     7,   -27,  -347,    60,  -347,  2236,
+    -347,  -347,  -347,  1250,  -347,  -347,   -33,  2236,  -347,    17,
+     -72,  -347,   408,  -347,  -347,  -347,  -347,   106,  2310,   -24,
+    -347,  1348,  1639,  -347,    79,  2310,   106,  1831,  -347,    71,
+    -347,  -347,  -347,  -347,  -347,  1639,  1639,  1639,  -347,  -347,
+    -347,  -347,  -347,  -347,  -347,    19,  -347,  -347,  -347,    73,
+     -21,  1734,    89,  -347,  1639,    66,    72,   108,   -64,    50,
+      81,    74,    87,   114,   123,   -62,  -347,   110,  -347,  -347,
+    1916,  2236,   116,  -347,    31,   104,   105,  -347,   117,   118,
+     109,  1446,   120,  1639,   113,   122,   111,  -347,  -347,    56,
+    -347,  -347,   -13,  -347,   -38,   125,  -347,  -347,  -347,  -347,
+     524,  -347,  -347,  -347,  -347,  -347,  -347,   124,  -347,  -347,
+    1541,  1639,   119,   127,  -347,  -347,   106,   129,    -8,  -347,
+     -66,  -347,  -347,  -347,    -9,  -347,  -347,  1639,  2378,  -347,
+    -347,  1639,   131,  -347,  -347,  -347,  1639,  1639,  1639,  1639,
+    1639,  1639,  1639,  1639,  1639,  1639,  1639,  1639,  1639,  1639,
+    1639,  1639,  1639,  1639,  1639,  1639,  -347,  -347,  2001,  -347,
+    -347,  -347,  -347,  -347,   133,  -347,  1639,  -347,  -347,    20,
+    1639,   128,  -347,  -347,  -347,   640,  -347,  -347,  -347,  -347,
+    -347,  -347,  -347,  -347,  -347,  -347,  -347,  1639,  1639,  -347,
+    -347,  -347,  1639,   126,   135,  -347,  1639,   130,    22,  1639,
+     106,  -347,   -78,  -347,  -347,   138,   136,  -347,   145,  -347,
+    -347,  -347,  -347,  -347,    66,    66,    72,    72,   108,   108,
+     108,   108,   -64,   -64,    50,    81,    74,    87,   114,   123,
+      86,  -347,   190,    35,   872,   988,     5,  -347,    10,  -347,
+    1085,   640,  -347,  -347,   143,  1639,   139,  -347,  1639,  -347,
+     144,  -347,  1639,  -347,  -347,  1639,   149,  -347,  -347,  -347,
+    -347,  1085,   133,  -347,   136,   106,  2310,   152,   150,  -347,
+    -347,  1639,  -347,  -347,   151,  -347,  1639,  -347,   146,   157,
+     246,  -347,   156,   154,   756,  -347,  -347,   155,    21,  1639,
+     756,   133,  -347,  1639,  -347,  -347,  -347,  -347,   158,   136,
+    -347,  -347,  -347,  -347
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -872,78 +872,78 @@
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     0,   148,   149,   150,     0,   130,   140,   164,   161,
-     162,   163,   168,   169,   170,   171,   172,   173,   165,   166,
-     167,   174,   175,   176,   177,   178,   179,   141,   142,   145,
-     131,   180,   181,   182,   183,   184,   185,     0,   128,   127,
-       0,   160,   186,   188,   201,   202,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   187,   198,   199,   200,     0,
-     204,   273,   274,     0,    97,   107,     0,   112,   118,   135,
-       0,   133,   125,     0,   136,   146,   157,   203,     0,   270,
-     272,   132,   124,     0,   138,     0,   143,   144,     2,     3,
-     207,     0,     0,    88,     0,    95,   107,   129,   108,   109,
-     110,    98,     0,   107,     0,    89,     2,   119,   134,     0,
-      94,     0,   126,   147,   137,     0,     1,   271,   139,     0,
-       0,   205,   154,     0,   152,     0,   275,    99,   104,   106,
-     111,     0,   113,   100,     0,     0,    87,     0,     0,     0,
-       0,   209,     4,     8,     6,     7,     9,    30,     0,     0,
-       0,   158,    37,    36,    38,    35,     5,    11,    31,    13,
-      18,    19,     0,     0,    24,     0,    39,     0,    43,    46,
-      49,    54,    57,    59,    61,    63,    65,    67,    69,    86,
-       0,    28,    90,     0,     0,     0,   151,     0,     0,     0,
-     255,     0,     0,     0,     0,     0,     0,     0,     0,   229,
-     238,   242,    39,    71,    84,     0,   218,     0,   146,   221,
-     240,   220,   219,     0,   222,   223,   224,   225,   226,   227,
-     101,   103,   105,     0,     0,     0,     0,   217,   123,     0,
-     215,     0,   213,     0,   210,    32,    33,     0,    15,    16,
-       0,     0,    22,    21,     0,   160,    25,    27,    34,     0,
+       0,     0,   146,   147,   148,     0,   130,   138,   162,   159,
+     160,   161,   166,   167,   168,   169,   170,   171,   163,   164,
+     165,   172,   173,   174,   175,   176,   177,   139,   140,   143,
+     131,   178,   179,   180,   181,   182,   183,     0,   128,   127,
+       0,   158,   184,   186,   199,   200,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   185,   196,   197,   198,     0,
+     202,   271,   272,     0,    97,   107,     0,   112,   118,   135,
+       0,   133,   125,     0,   136,   144,   155,   201,     0,   268,
+     270,   132,   124,     0,   141,   142,     2,     3,   205,     0,
+       0,    88,     0,    95,   107,   129,   108,   109,   110,    98,
+       0,   107,     0,    89,     2,   119,   134,     0,    94,     0,
+     126,   145,   137,     0,     1,   269,     0,     0,   203,   152,
+       0,   150,     0,   273,    99,   104,   106,   111,     0,   113,
+     100,     0,     0,    87,     0,     0,     0,     0,   207,     4,
+       8,     6,     7,     9,    30,     0,     0,     0,   156,    37,
+      36,    38,    35,     5,    11,    31,    13,    18,    19,     0,
+       0,    24,     0,    39,     0,    43,    46,    49,    54,    57,
+      59,    61,    63,    65,    67,    69,    86,     0,    28,    90,
+       0,     0,     0,   149,     0,     0,     0,   253,     0,     0,
+       0,     0,     0,     0,     0,     0,   227,   236,   240,    39,
+      71,    84,     0,   216,     0,   144,   219,   238,   218,   217,
+       0,   220,   221,   222,   223,   224,   225,   101,   103,   105,
+       0,     0,     0,     0,   215,   123,     0,   213,     0,   211,
+       0,   208,    32,    33,     0,    15,    16,     0,     0,    22,
+      21,     0,   158,    25,    27,    34,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   159,
-     208,     0,   155,   156,   153,   266,   265,   236,   257,     0,
-     269,   267,     0,     0,     0,   250,   253,   228,     0,    74,
-      75,    77,    76,    79,    80,    81,    82,    83,    78,    73,
-       0,     0,   243,   239,   241,     0,     0,     0,   117,     0,
-     120,     0,     0,     0,   211,     0,    91,    10,     0,    17,
-      29,    14,    20,    26,    40,    41,    42,    45,    44,    47,
-      48,    52,    53,    50,    51,    55,    56,    58,    60,    62,
-      64,    66,    68,     0,   206,     0,     0,     0,     0,     0,
-     268,     0,   249,     0,   230,    72,    85,     0,     0,   114,
-     121,     0,   212,     0,   214,     0,    92,    12,     0,     0,
-     235,   237,   260,   259,   262,   236,   247,   251,     0,     0,
-       0,     0,   102,   115,     0,   122,   216,     0,    70,     0,
-     261,     0,     0,   246,   244,     0,     0,     0,   231,   116,
-       0,     0,   263,     0,   236,   248,     0,   233,   254,   232,
-      93,     0,   264,   258,   245,   252,   256
+       0,     0,     0,     0,     0,     0,   157,   206,     0,   153,
+     154,   151,   264,   263,   234,   255,     0,   267,   265,     0,
+       0,     0,   248,   251,   226,     0,    74,    75,    77,    76,
+      79,    80,    81,    82,    83,    78,    73,     0,     0,   241,
+     237,   239,     0,     0,     0,   117,     0,   120,     0,     0,
+       0,   209,     0,    91,    10,     0,    17,    29,    14,    20,
+      26,    40,    41,    42,    45,    44,    47,    48,    52,    53,
+      50,    51,    55,    56,    58,    60,    62,    64,    66,    68,
+       0,   204,     0,     0,     0,     0,     0,   266,     0,   247,
+       0,   228,    72,    85,     0,     0,   114,   121,     0,   210,
+       0,   212,     0,    92,    12,     0,     0,   233,   235,   258,
+     257,   260,   234,   245,   249,     0,     0,     0,     0,   102,
+     115,     0,   122,   214,     0,    70,     0,   259,     0,     0,
+     244,   242,     0,     0,     0,   229,   116,     0,     0,   261,
+       0,   234,   246,     0,   231,   252,   230,    93,     0,   262,
+     256,   243,   250,   254
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -361,   -39,  -361,  -361,  -361,  -361,  -361,  -361,    73,  -361,
-    -361,  -361,  -361,  -107,  -361,   -15,   -20,   -67,   -19,    53,
-      54,    55,    51,    57,    58,  -361,  -110,  -132,  -361,  -146,
-    -125,  -361,     6,    12,  -361,  -361,  -361,   190,   228,   217,
-     195,  -361,  -361,  -336,    25,  -361,  -104,    27,   -57,   322,
-    -361,  -361,   141,     0,  -361,  -361,  -361,  -361,  -109,  -130,
-     100,    19,  -185,   -17,  -193,  -310,   -65,  -361,  -361,   -70,
-    -360,  -361,  -361,   -92,    46,   -13,  -361,  -361,  -361,  -361,
-    -361,   -38,  -361,  -361,  -361,  -361,  -361,  -361,  -361,  -361,
-    -361,   259,  -361,  -361
+    -347,   -39,  -347,  -347,  -347,  -347,  -347,  -347,    32,  -347,
+    -347,  -347,  -347,    63,  -347,   -48,   -37,   -90,   -54,    12,
+      14,    16,    18,    23,     9,  -347,   -96,  -127,  -347,  -138,
+    -125,  -347,    13,    15,  -347,  -347,  -347,   147,   184,   178,
+     153,  -347,  -347,  -325,  -347,  -347,  -106,   -47,   -68,   277,
+    -347,  -347,   100,     0,  -347,  -347,  -347,  -347,  -101,  -123,
+      61,   -22,  -214,   -56,  -202,  -323,  -102,  -347,  -347,  -109,
+    -346,  -347,  -347,   -88,     8,   -53,  -347,  -347,  -347,  -347,
+    -347,   -77,  -347,  -347,  -347,  -347,  -347,  -347,  -347,  -347,
+    -347,   217,  -347,  -347
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,   230,   156,   157,   158,   318,   159,   160,   161,   162,
-     163,   164,   165,   202,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   203,   204,   300,   205,
-     180,   111,   206,   207,    63,    64,    65,   128,   101,   102,
-     129,    66,    67,    68,    69,   103,    70,    71,    72,    73,
-      74,   123,   124,   181,    76,    77,   184,   120,   140,   141,
-     231,   232,   228,   209,   210,   211,   212,   288,   381,   408,
-     345,   346,   347,   409,   213,   214,   215,   394,   216,   395,
-     217,   380,   218,   353,   277,   348,   374,   391,   392,   219,
-      78,    79,    80,    94
+      -1,   227,   153,   154,   155,   315,   156,   157,   158,   159,
+     160,   161,   162,   199,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   200,   201,   297,   202,
+     177,   109,   203,   204,    63,    64,    65,   125,    99,   100,
+     126,    66,    67,    68,    69,   101,    70,    71,    72,    73,
+      74,   120,   121,   178,    76,    77,   181,   117,   137,   138,
+     228,   229,   225,   206,   207,   208,   209,   285,   378,   405,
+     342,   343,   344,   406,   210,   211,   212,   391,   213,   392,
+     214,   377,   215,   350,   274,   345,   371,   388,   389,   216,
+      78,    79,    80,    92
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -951,372 +951,364 @@
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      75,    91,   126,   227,   237,   179,    61,   138,   166,   226,
-     234,   183,    62,   112,   315,   393,   138,   378,    97,   252,
-     304,   253,    92,   267,   179,     7,    83,   166,    84,   107,
-      88,    89,   246,   256,   257,   365,   138,   371,   378,   308,
-     134,   235,   236,   366,   414,   130,    93,   135,   282,    98,
-      99,   100,   316,   234,   139,   186,    27,    28,   268,    29,
-     248,   187,    90,   139,    95,   132,    96,    37,   258,   259,
-      75,   284,    97,   113,   130,   271,   243,   121,    75,   138,
-     138,   229,   244,   139,    61,   119,   179,   407,   223,   166,
-      62,   220,   227,   407,   319,   224,   108,   115,   307,   122,
-     317,   114,    75,    98,    99,   100,   301,   238,   239,   375,
-     118,    75,   323,   179,   -96,   301,   166,   133,   104,   125,
-      75,   105,   343,   376,   360,   208,   139,   139,   240,   301,
-     185,    75,   241,   349,     2,     3,     4,   351,    75,   136,
-      75,   234,   324,   325,   326,   166,   166,   166,   166,   166,
-     166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
-     166,   304,    83,   301,    84,   411,   302,   138,   355,   356,
-     182,   301,   313,   383,   -29,   314,   385,   227,   301,   313,
-     357,   350,   362,    75,    75,    86,    87,   363,     7,   331,
-     332,   333,   334,   106,    89,   179,    88,    89,   166,   399,
-     260,   261,   179,   272,   273,   166,   242,   377,    98,    99,
-     100,   254,   255,   208,   139,   249,   250,   251,   247,    27,
-      28,   415,    29,    81,   301,   368,   227,   263,   377,   227,
-      37,    38,    39,     7,   329,   330,   388,   327,   328,   264,
-     387,   335,   336,   401,   262,   265,   266,   269,   275,   379,
-     276,   278,   227,   279,   370,   179,   412,   280,   166,   283,
-     285,   286,   -28,   309,    27,    28,   310,    29,    81,   287,
-     379,    75,   305,   312,   227,    37,    38,    39,   289,   290,
-     291,   292,   293,   294,   295,   296,   297,   298,   208,  -234,
-     -23,   358,   352,   359,   367,   361,   -30,   299,   369,   301,
-      82,   382,   384,   386,   389,   402,   397,   398,   403,   400,
-     404,   410,   199,   416,   322,   337,   340,   338,   406,   339,
-     131,   221,   112,   341,   127,   342,   222,    85,   274,   311,
-     405,   372,   364,   413,   354,   373,   390,   117,     0,   396,
-       0,     0,     0,     0,     0,     0,     0,   208,   208,     0,
-       0,     0,     0,   208,   208,     0,     0,     0,     0,     0,
+      75,    89,   110,   135,   123,   224,   223,   305,   301,   234,
+     312,   135,    95,    61,   231,    62,   180,   176,    86,    87,
+       7,   368,   106,   253,   254,   375,   390,   112,   362,   105,
+     264,   135,   127,   183,   243,   176,   363,    84,    85,   184,
+      81,   136,    93,    96,    97,    98,   375,    90,   313,   136,
+      88,    27,    28,   279,    29,   411,    94,   231,   255,   256,
+     127,   102,    37,   129,   103,   265,   113,   226,   281,   136,
+      75,   404,    82,   111,   135,   135,    91,   404,    75,   131,
+     268,   179,   220,   116,   240,   118,   132,    95,   217,   221,
+     241,    61,   357,    62,   224,   304,   314,   176,   298,   316,
+      75,   299,   298,   310,   235,   236,   311,   119,   -96,    75,
+     372,   130,   136,   136,   320,   373,   298,    75,    96,    97,
+      98,   298,   205,    81,   176,   237,   408,   340,    75,   238,
+     182,   298,   298,   310,   347,    75,   359,    75,   346,   257,
+     258,   380,   348,   122,   382,   231,     2,     3,     4,   301,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     104,    87,   135,   328,   329,   330,   331,   396,   133,   296,
+     352,   353,    96,    97,    98,   -29,   163,   354,   239,   224,
+      75,    75,    86,    87,   360,   246,   247,   248,   249,   412,
+     250,   251,   252,   244,   163,   269,   270,   298,   365,   260,
+     136,   324,   325,   332,   333,   262,   176,   259,   232,   233,
+     205,   261,   374,   176,   326,   327,   263,   266,   272,   273,
+     284,   275,   276,   277,   280,   282,   283,   245,   224,   -28,
+     302,   224,   306,   374,   307,   309,   -23,   384,   385,   355,
+     349,  -232,   356,   358,   376,   364,   366,   298,   398,   -30,
+     379,   383,   381,   386,   224,   367,   163,   394,   397,   395,
+     399,   409,   400,   401,   196,   376,   176,   403,    75,   407,
+     319,   334,   413,   339,   335,   218,   224,   336,   124,   128,
+     337,   219,    83,   163,   271,   205,   338,   308,   361,   369,
+     402,   410,   370,   351,   387,   115,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   110,   321,
+     322,   323,   163,   163,   163,   163,   163,   163,   163,   163,
+     163,   163,   163,   163,   163,   163,   163,   163,     0,     0,
+       0,     0,     0,     0,     0,     0,   393,     0,     0,     0,
+       0,     0,     0,     0,   205,   205,     0,     0,     0,     0,
+     205,   205,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   163,     0,     0,     0,     0,
+       0,   205,   163,     0,     0,     0,    75,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   208,     0,     0,     0,     0,    75,
+       0,     0,     0,     0,   205,     0,     0,     0,     0,     0,
+     205,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,   185,   186,   187,   163,   188,   189,   190,   191,
+     192,   193,   194,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+       0,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,   195,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,     0,
+      56,    57,    58,    59,   139,    60,   140,   141,   142,   143,
+     144,     0,     0,   145,   146,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   208,     0,     0,
-       0,     0,     0,   208,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,   188,   189,   190,     0,   191,
-     192,   193,   194,   195,   196,   197,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,     0,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,   198,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,     0,    56,    57,    58,    59,   142,    60,   143,
-     144,   145,   146,   147,     0,     0,   148,   149,     0,     0,
+       0,     0,   147,     0,     0,     0,   196,   197,     0,     0,
+       0,     0,   198,   149,   150,   151,   152,     1,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,   185,   186,
+     187,     0,   188,   189,   190,   191,   192,   193,   194,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,     0,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+     195,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,     0,    56,    57,    58,    59,
+     139,    60,   140,   141,   142,   143,   144,     0,     0,   145,
+     146,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   147,     0,
+       0,     0,   196,   300,     0,     0,     0,     0,   198,   149,
+     150,   151,   152,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,   185,   186,   187,     0,   188,   189,
+     190,   191,   192,   193,   194,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,     0,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,   195,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,     0,    56,    57,    58,    59,   139,    60,   140,   141,
+     142,   143,   144,     0,     0,   145,   146,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   150,     0,     0,     0,   199,
-     200,     0,     0,     0,     0,   201,   152,   153,   154,   155,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,   188,   189,   190,     0,   191,   192,   193,   194,   195,
-     196,   197,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,     0,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,   198,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,     0,    56,
-      57,    58,    59,   142,    60,   143,   144,   145,   146,   147,
-       0,     0,   148,   149,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   147,     0,     0,     0,   196,     0,
+       0,     0,     0,     0,   198,   149,   150,   151,   152,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+     185,   186,   187,     0,   188,   189,   190,   191,   192,   193,
+     194,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,     0,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,   195,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,     0,    56,    57,
+      58,    59,   139,    60,   140,   141,   142,   143,   144,     0,
+       0,   145,   146,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   150,     0,     0,     0,   199,   303,     0,     0,     0,
-       0,   201,   152,   153,   154,   155,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,   188,   189,   190,
-       0,   191,   192,   193,   194,   195,   196,   197,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,     0,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,   198,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,     0,    56,    57,    58,    59,   142,
-      60,   143,   144,   145,   146,   147,     0,     0,   148,   149,
+     147,     0,     0,     0,   122,     0,     0,     0,     0,     0,
+     198,   149,   150,   151,   152,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,   185,   186,   187,     0,
+     188,   189,   190,   191,   192,   193,   194,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,     0,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,   195,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,     0,    56,    57,    58,    59,   139,    60,
+     140,   141,   142,   143,   144,     0,     0,   145,   146,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   150,     0,     0,
-       0,   199,     0,     0,     0,     0,     0,   201,   152,   153,
-     154,   155,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,   188,   189,   190,     0,   191,   192,   193,
-     194,   195,   196,   197,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,     0,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,   198,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-       0,    56,    57,    58,    59,   142,    60,   143,   144,   145,
-     146,   147,     0,     0,   148,   149,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   150,     0,     0,     0,   125,     0,     0,
-       0,     0,     0,   201,   152,   153,   154,   155,     1,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,   188,
-     189,   190,     0,   191,   192,   193,   194,   195,   196,   197,
+       0,     0,     0,     0,     0,     0,   147,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   198,   149,   150,   151,
+     152,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+       0,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,     0,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,     0,
+      56,    57,    58,    59,   139,    60,   140,   141,   142,   143,
+     144,     0,     0,   145,   146,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   134,     2,
+       3,     4,   147,     6,     7,     8,     9,    10,    11,     0,
+       0,     0,   198,   149,   150,   151,   152,     0,     0,     0,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,     0,    29,    30,
       31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,   198,    42,    43,    44,    45,    46,    47,    48,    49,
+      41,     0,    42,    43,    44,    45,    46,    47,    48,    49,
       50,    51,    52,    53,    54,    55,     0,    56,    57,    58,
-      59,   142,    60,   143,   144,   145,   146,   147,     0,     0,
-     148,   149,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   150,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   201,
-     152,   153,   154,   155,     1,     2,     3,     4,     5,     6,
+      59,   139,    60,   140,   141,   142,   143,   144,     0,     0,
+     145,   146,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     2,     3,     4,     0,     0,   147,
+       8,     9,    10,    11,     0,     0,     0,     0,     0,     0,
+     149,   150,   151,   152,     0,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+       0,     0,     0,     0,     0,    31,    32,    33,    34,    35,
+      36,     0,     0,     0,    40,    41,     0,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,     0,    56,    57,    58,     0,   107,    60,     0,     0,
+       8,     9,    10,    11,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+       0,     0,     0,     0,   108,    31,    32,    33,    34,    35,
+      36,     0,     0,     0,    40,    41,     0,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,     0,    56,    57,    58,     0,   139,    60,   140,   141,
+     142,   143,   144,     0,     0,   145,   146,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   147,     0,     0,   148,     8,     9,
+      10,    11,     0,     0,     0,   149,   150,   151,   152,     0,
+       0,     0,     0,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,     0,     0,
+       0,     0,     0,    31,    32,    33,    34,    35,    36,     0,
+       0,     0,    40,    41,     0,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,     0,
+      56,    57,    58,     0,   139,    60,   140,   141,   142,   143,
+     144,     0,     0,   145,   146,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   147,     0,     0,   222,     8,     9,    10,    11,
+       0,     0,     0,   149,   150,   151,   152,     0,     0,     0,
+       0,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,     0,     0,     0,     0,
+       0,    31,    32,    33,    34,    35,    36,     0,     0,     0,
+      40,    41,     0,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,     0,    56,    57,
+      58,     0,   139,    60,   140,   141,   142,   143,   144,     0,
+       0,   145,   146,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     147,     8,     9,    10,    11,     0,     0,     0,     0,     0,
+     278,   149,   150,   151,   152,     0,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,     0,     0,     0,     0,     0,    31,    32,    33,    34,
+      35,    36,     0,     0,     0,    40,    41,     0,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,     0,    56,    57,    58,     0,   139,    60,   140,
+     141,   142,   143,   144,     0,     0,   145,   146,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   147,     0,     0,   303,     8,
+       9,    10,    11,     0,     0,     0,   149,   150,   151,   152,
+       0,     0,     0,     0,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,     0,
+       0,     0,     0,     0,    31,    32,    33,    34,    35,    36,
+       0,     0,     0,    40,    41,     0,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+       0,    56,    57,    58,     0,   139,    60,   140,   141,   142,
+     143,   144,     0,     0,   145,   146,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   147,     8,     9,    10,    11,     0,     0,
+       0,     0,     0,     0,   149,   150,   151,   152,     0,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,     0,     0,     0,     0,     0,    31,
+      32,    33,    34,    35,    36,     0,     0,     0,    40,   242,
+       0,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,     0,    56,    57,    58,     0,
+     139,    60,   140,   141,   142,   143,   144,     0,     0,   145,
+     146,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   134,     2,     3,     4,   147,     6,
+       7,     8,     9,    10,    11,     0,     0,     0,     0,   149,
+     150,   151,   152,     0,     0,     0,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,     0,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,     0,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,     0,    56,    57,    58,    59,     0,    60,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   134,
+       2,     3,     4,     0,     6,     7,     8,     9,    10,    11,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     230,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,     0,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,     0,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,     0,    56,    57,
+      58,    59,     0,    60,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   134,     2,     3,     4,     0,     6,
+       7,     8,     9,    10,    11,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   267,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,     0,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,     0,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,     0,    56,    57,    58,    59,     0,    60,     0,
+       0,     0,     0,     0,     0,     0,   114,     0,     0,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     341,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,     0,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,     0,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,     0,    56,    57,
+      58,    59,     0,    60,     1,     2,     3,     4,     5,     6,
        7,     8,     9,    10,    11,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       26,    27,    28,     0,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,     0,    42,    43,
       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,     0,    56,    57,    58,    59,   142,    60,   143,
-     144,   145,   146,   147,     0,     0,   148,   149,     0,     0,
+      54,    55,     0,    56,    57,    58,    59,     0,    60,   134,
+       2,     3,     4,     0,     6,     7,     8,     9,    10,    11,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   137,     2,     3,     4,   150,     6,     7,     8,     9,
-      10,    11,     0,     0,     0,   201,   152,   153,   154,   155,
+       0,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,     0,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,     0,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,     0,    56,    57,
+      58,    59,     0,    60,     2,     3,     4,     0,     0,     0,
+       8,     9,    10,    11,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+       0,     0,     0,     0,     0,    31,    32,    33,    34,    35,
+      36,     0,     0,     0,    40,    41,     0,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,     0,    56,    57,    58,     0,     0,    60,     8,     9,
+      10,    11,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-       0,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,     0,    42,    43,    44,    45,    46,
+      19,    20,    21,    22,    23,    24,    25,    26,     0,     0,
+       0,     0,     0,    31,    32,    33,    34,    35,    36,     0,
+       0,     0,    40,    41,     0,    42,    43,    44,    45,    46,
       47,    48,    49,    50,    51,    52,    53,    54,    55,     0,
-      56,    57,    58,    59,   142,    60,   143,   144,   145,   146,
-     147,     0,     0,   148,   149,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     2,     3,     4,
-       0,     0,   150,     8,     9,    10,    11,     0,     0,     0,
-       0,     0,     0,   152,   153,   154,   155,     0,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,     0,     0,     0,     0,     0,    31,    32,
-      33,    34,    35,    36,     0,     0,     0,    40,    41,     0,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,     0,    56,    57,    58,     0,   109,
-      60,     0,     0,     8,     9,    10,    11,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,     0,     0,     0,     0,   110,    31,    32,
-      33,    34,    35,    36,     0,     0,     0,    40,    41,     0,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,     0,    56,    57,    58,     0,   142,
-      60,   143,   144,   145,   146,   147,     0,     0,   148,   149,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   150,     0,     0,
-     151,     8,     9,    10,    11,     0,     0,     0,   152,   153,
-     154,   155,     0,     0,     0,     0,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,     0,     0,     0,     0,     0,    31,    32,    33,    34,
-      35,    36,     0,     0,     0,    40,    41,     0,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,     0,    56,    57,    58,     0,   142,    60,   143,
-     144,   145,   146,   147,     0,     0,   148,   149,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   150,     0,     0,   225,     8,
-       9,    10,    11,     0,     0,     0,   152,   153,   154,   155,
-       0,     0,     0,     0,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,     0,
-       0,     0,     0,     0,    31,    32,    33,    34,    35,    36,
-       0,     0,     0,    40,    41,     0,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-       0,    56,    57,    58,     0,   142,    60,   143,   144,   145,
-     146,   147,     0,     0,   148,   149,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   150,     8,     9,    10,    11,     0,     0,
-       0,     0,     0,   281,   152,   153,   154,   155,     0,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,     0,     0,     0,     0,     0,    31,
-      32,    33,    34,    35,    36,     0,     0,     0,    40,    41,
-       0,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,     0,    56,    57,    58,     0,
-     142,    60,   143,   144,   145,   146,   147,     0,     0,   148,
-     149,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   150,     0,
-       0,   306,     8,     9,    10,    11,     0,     0,     0,   152,
-     153,   154,   155,     0,     0,     0,     0,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,     0,     0,     0,     0,     0,    31,    32,    33,
-      34,    35,    36,     0,     0,     0,    40,    41,     0,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,     0,    56,    57,    58,     0,   142,    60,
-     143,   144,   145,   146,   147,     0,     0,   148,   149,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   150,     8,     9,    10,
-      11,     0,     0,     0,     0,     0,     0,   152,   153,   154,
-     155,     0,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,     0,     0,     0,
-       0,     0,    31,    32,    33,    34,    35,    36,     0,     0,
-       0,    40,   245,     0,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,     0,    56,
-      57,    58,     0,   142,    60,   143,   144,   145,   146,   147,
-       0,     0,   148,   149,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   137,     2,     3,
-       4,   150,     6,     7,     8,     9,    10,    11,     0,     0,
-       0,     0,   152,   153,   154,   155,     0,     0,     0,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,     0,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-       0,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,     0,    56,    57,    58,    59,
-       0,    60,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   137,     2,     3,     4,     0,     6,     7,     8,
-       9,    10,    11,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   233,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,     0,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,     0,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-       0,    56,    57,    58,    59,     0,    60,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   137,     2,     3,
-       4,     0,     6,     7,     8,     9,    10,    11,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   270,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,     0,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-       0,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,     0,    56,    57,    58,    59,
-       0,    60,     0,     0,     0,     0,     0,     0,     0,   116,
-       0,     0,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   344,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,     0,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,     0,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-       0,    56,    57,    58,    59,     0,    60,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,     0,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-       0,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,     0,    56,    57,    58,    59,
-       0,    60,   137,     2,     3,     4,     0,     6,     7,     8,
-       9,    10,    11,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,     0,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,     0,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-       0,    56,    57,    58,    59,     0,    60,     2,     3,     4,
-       0,     0,     0,     8,     9,    10,    11,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,     0,     0,     0,     0,     0,    31,    32,
-      33,    34,    35,    36,     0,     0,     0,    40,    41,     0,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,     0,    56,    57,    58,     0,     0,
-      60,     8,     9,    10,    11,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,     0,     0,     0,     0,     0,    31,    32,    33,    34,
-      35,    36,     0,     0,     0,    40,    41,     0,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,     0,    56,    57,    58,     0,   320,    60,     8,
-       9,    10,    11,   321,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,     0,
-       0,     0,     0,     0,    31,    32,    33,    34,    35,    36,
-       0,     0,     0,    40,    41,     0,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-       0,    56,    57,    58,     0,     0,    60
+      56,    57,    58,     0,   317,    60,     8,     9,    10,    11,
+     318,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,     0,     0,     0,     0,
+       0,    31,    32,    33,    34,    35,    36,     0,     0,     0,
+      40,    41,     0,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,     0,    56,    57,
+      58,     0,     0,    60
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    40,    94,   135,   150,   115,     0,   111,   115,   134,
-     140,   120,     0,    70,    76,   375,   120,   353,     9,   116,
-     213,   118,   104,    92,   134,     9,     1,   134,     1,    68,
-      76,    77,   164,    87,    88,   106,   140,   347,   374,   224,
-     106,   148,   149,   114,   404,   102,   114,   113,   194,    40,
-      41,    42,   114,   183,   111,   105,    40,    41,   127,    43,
-     167,   111,   108,   120,   105,   104,   111,    51,   122,   123,
-      70,   196,     9,    73,   131,   184,   105,   108,    78,   183,
-     184,   138,   111,   140,    78,    85,   196,   397,   106,   196,
-      78,   130,   224,   403,   240,   113,    69,   106,   223,    76,
-     105,    74,   102,    40,    41,    42,   111,    85,    86,   105,
-      83,   111,   244,   223,   105,   111,   223,   104,   111,   108,
-     120,   114,   268,   105,   309,   125,   183,   184,   106,   111,
-     113,   131,   110,   279,     4,     5,     6,   283,   138,   108,
-     140,   271,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-     267,   354,   137,   111,   137,   105,   114,   271,   300,   301,
-     114,   111,   111,   358,   104,   114,   361,   309,   111,   111,
-     305,   114,   114,   183,   184,    40,    41,   312,     9,   256,
-     257,   258,   259,    76,    77,   305,    76,    77,   305,   384,
-      89,    90,   312,    79,    80,   312,   105,   353,    40,    41,
-      42,    83,    84,   213,   271,   119,   120,   121,   104,    40,
-      41,   406,    43,    44,   111,   112,   358,   125,   374,   361,
-      51,    52,    53,     9,   254,   255,   368,   252,   253,   124,
-     365,   260,   261,   389,   126,    91,    93,   107,   114,   353,
-     114,   104,   384,   104,   346,   365,   402,   114,   365,   104,
-     112,   104,   104,   113,    40,    41,   107,    43,    44,   109,
-     374,   271,   106,   106,   406,    51,    52,    53,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   103,   288,   108,
-     105,   113,   112,   107,   107,   113,   104,   113,    56,   111,
-      76,   107,   113,   107,   104,   114,   105,   109,   105,   107,
-      17,   114,   108,   114,   241,   262,   265,   263,   113,   264,
-     103,   131,   379,   266,    96,   267,   131,     5,   187,   229,
-     395,   348,   313,   403,   288,   348,   374,    78,    -1,   378,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   347,   348,    -1,
-      -1,    -1,    -1,   353,   354,    -1,    -1,    -1,    -1,    -1,
+       0,    40,    70,   109,    92,   132,   131,   221,   210,   147,
+      76,   117,     9,     0,   137,     0,   117,   113,    76,    77,
+       9,   344,    69,    87,    88,   350,   372,    74,   106,    68,
+      92,   137,   100,   105,   161,   131,   114,    40,    41,   111,
+      44,   109,   105,    40,    41,    42,   371,   104,   114,   117,
+     108,    40,    41,   191,    43,   401,   111,   180,   122,   123,
+     128,   111,    51,   102,   114,   127,   106,   135,   193,   137,
+      70,   394,    76,    73,   180,   181,   114,   400,    78,   106,
+     181,   114,   106,    83,   105,   108,   113,     9,   127,   113,
+     111,    78,   306,    78,   221,   220,   105,   193,   111,   237,
+     100,   114,   111,   111,    85,    86,   114,    76,   105,   109,
+     105,   104,   180,   181,   241,   105,   111,   117,    40,    41,
+      42,   111,   122,    44,   220,   106,   105,   265,   128,   110,
+     113,   111,   111,   111,   114,   135,   114,   137,   276,    89,
+      90,   355,   280,   108,   358,   268,     4,     5,     6,   351,
+      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
+      76,    77,   268,   253,   254,   255,   256,   381,   108,   113,
+     297,   298,    40,    41,    42,   104,   113,   302,   105,   306,
+     180,   181,    76,    77,   309,   119,   120,   121,   116,   403,
+     118,    83,    84,   104,   131,    79,    80,   111,   112,   125,
+     268,   249,   250,   257,   258,    91,   302,   126,   145,   146,
+     210,   124,   350,   309,   251,   252,    93,   107,   114,   114,
+     109,   104,   104,   114,   104,   112,   104,   164,   355,   104,
+     106,   358,   113,   371,   107,   106,   105,   362,   365,   113,
+     112,   108,   107,   113,   350,   107,    56,   111,   386,   104,
+     107,   107,   113,   104,   381,   343,   193,   105,   107,   109,
+     114,   399,   105,    17,   108,   371,   362,   113,   268,   114,
+     238,   259,   114,   264,   260,   128,   403,   261,    94,   101,
+     262,   128,     5,   220,   184,   285,   263,   226,   310,   345,
+     392,   400,   345,   285,   371,    78,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   376,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   375,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   344,   345,    -1,    -1,    -1,    -1,
+     350,   351,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   302,    -1,    -1,    -1,    -1,
+      -1,   371,   309,    -1,    -1,    -1,   376,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   374,    -1,    -1,    -1,    -1,   379,
+      -1,    -1,    -1,    -1,   394,    -1,    -1,    -1,    -1,    -1,
+     400,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,   362,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      -1,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    -1,
+      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+      82,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   397,    -1,    -1,
-      -1,    -1,    -1,   403,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    -1,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    -1,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    -1,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    -1,    -1,    85,    86,    -1,    -1,
+      -1,    -1,   104,    -1,    -1,    -1,   108,   109,    -1,    -1,
+      -1,    -1,   114,   115,   116,   117,   118,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    -1,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    -1,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    -1,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    -1,    -1,    85,
+      86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,
+      -1,    -1,   108,   109,    -1,    -1,    -1,    -1,   114,   115,
+     116,   117,   118,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    -1,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    -1,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    -1,    -1,    85,    86,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,   108,
-     109,    -1,    -1,    -1,    -1,   114,   115,   116,   117,   118,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    -1,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    -1,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    -1,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,   108,    -1,
+      -1,    -1,    -1,    -1,   114,   115,   116,   117,   118,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    -1,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    -1,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    -1,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    -1,
+      -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   104,    -1,    -1,    -1,   108,   109,    -1,    -1,    -1,
-      -1,   114,   115,   116,   117,   118,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      -1,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    -1,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    -1,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    -1,    -1,    85,    86,
+     104,    -1,    -1,    -1,   108,    -1,    -1,    -1,    -1,    -1,
+     114,   115,   116,   117,   118,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    -1,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    -1,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    -1,    -1,    85,    86,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,
-      -1,   108,    -1,    -1,    -1,    -1,    -1,   114,   115,   116,
-     117,   118,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    -1,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    -1,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      -1,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    82,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   104,    -1,    -1,    -1,   108,    -1,    -1,
-      -1,    -1,    -1,   114,   115,   116,   117,   118,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    -1,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    -1,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    -1,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    -1,    -1,
-      85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
-     115,   116,   117,   118,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    -1,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    -1,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    -1,    -1,    85,    86,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,     3,     4,     5,     6,   104,     8,     9,    10,    11,
-      12,    13,    -1,    -1,    -1,   114,   115,   116,   117,   118,
+      -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   114,   115,   116,   117,
+     118,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
       -1,    43,    44,    45,    46,    47,    48,    49,    50,    51,
@@ -1324,26 +1316,55 @@
       62,    63,    64,    65,    66,    67,    68,    69,    70,    -1,
       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
       82,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,     4,     5,     6,
-      -1,    -1,   104,    10,    11,    12,    13,    -1,    -1,    -1,
-      -1,    -1,    -1,   115,   116,   117,   118,    -1,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    -1,    -1,    -1,    -1,    -1,    45,    46,
-      47,    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    -1,    72,    73,    74,    -1,    76,
-      77,    -1,    -1,    10,    11,    12,    13,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    -1,    -1,    -1,    -1,   114,    45,    46,
-      47,    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    -1,    72,    73,    74,    -1,    76,
-      77,    78,    79,    80,    81,    82,    -1,    -1,    85,    86,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
+       5,     6,   104,     8,     9,    10,    11,    12,    13,    -1,
+      -1,    -1,   114,   115,   116,   117,   118,    -1,    -1,    -1,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    -1,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    -1,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    -1,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    -1,    -1,
+      85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     4,     5,     6,    -1,    -1,   104,
+      10,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,
+     115,   116,   117,   118,    -1,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,    49,
+      50,    -1,    -1,    -1,    54,    55,    -1,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    -1,    72,    73,    74,    -1,    76,    77,    -1,    -1,
+      10,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      -1,    -1,    -1,    -1,   114,    45,    46,    47,    48,    49,
+      50,    -1,    -1,    -1,    54,    55,    -1,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    -1,    72,    73,    74,    -1,    76,    77,    78,    79,
+      80,    81,    82,    -1,    -1,    85,    86,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,
-     107,    10,    11,    12,    13,    -1,    -1,    -1,   115,   116,
-     117,   118,    -1,    -1,    -1,    -1,    25,    26,    27,    28,
+      -1,    -1,    -1,    -1,   104,    -1,    -1,   107,    10,    11,
+      12,    13,    -1,    -1,    -1,   115,   116,   117,   118,    -1,
+      -1,    -1,    -1,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    -1,    -1,
+      -1,    -1,    -1,    45,    46,    47,    48,    49,    50,    -1,
+      -1,    -1,    54,    55,    -1,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    -1,
+      72,    73,    74,    -1,    76,    77,    78,    79,    80,    81,
+      82,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   104,    -1,    -1,   107,    10,    11,    12,    13,
+      -1,    -1,    -1,   115,   116,   117,   118,    -1,    -1,    -1,
+      -1,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,
+      -1,    45,    46,    47,    48,    49,    50,    -1,    -1,    -1,
+      54,    55,    -1,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    -1,    72,    73,
+      74,    -1,    76,    77,    78,    79,    80,    81,    82,    -1,
+      -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     104,    10,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,
+     114,   115,   116,   117,   118,    -1,    25,    26,    27,    28,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
       39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
       49,    50,    -1,    -1,    -1,    54,    55,    -1,    57,    58,
@@ -1362,7 +1383,7 @@
       81,    82,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,   104,    10,    11,    12,    13,    -1,    -1,
-      -1,    -1,    -1,   114,   115,   116,   117,   118,    -1,    25,
+      -1,    -1,    -1,    -1,   115,   116,   117,   118,    -1,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
       36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,    45,
       46,    47,    48,    49,    50,    -1,    -1,    -1,    54,    55,
@@ -1370,95 +1391,76 @@
       66,    67,    68,    69,    70,    -1,    72,    73,    74,    -1,
       76,    77,    78,    79,    80,    81,    82,    -1,    -1,    85,
       86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,
-      -1,   107,    10,    11,    12,    13,    -1,    -1,    -1,   115,
-     116,   117,   118,    -1,    -1,    -1,    -1,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,
-      48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    -1,    72,    73,    74,    -1,    76,    77,
-      78,    79,    80,    81,    82,    -1,    -1,    85,    86,    -1,
+      -1,    -1,    -1,    -1,     3,     4,     5,     6,   104,     8,
+       9,    10,    11,    12,    13,    -1,    -1,    -1,    -1,   115,
+     116,   117,   118,    -1,    -1,    -1,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    -1,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    -1,    72,    73,    74,    75,    -1,    77,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
+       4,     5,     6,    -1,     8,     9,    10,    11,    12,    13,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   104,    10,    11,    12,
-      13,    -1,    -1,    -1,    -1,    -1,    -1,   115,   116,   117,
-     118,    -1,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    -1,    -1,    -1,
-      -1,    -1,    45,    46,    47,    48,    49,    50,    -1,    -1,
-      -1,    54,    55,    -1,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    -1,    72,
-      73,    74,    -1,    76,    77,    78,    79,    80,    81,    82,
-      -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
-       6,   104,     8,     9,    10,    11,    12,    13,    -1,    -1,
-      -1,    -1,   115,   116,   117,   118,    -1,    -1,    -1,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    -1,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      -1,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    -1,    72,    73,    74,    75,
-      -1,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,     3,     4,     5,     6,    -1,     8,     9,    10,
-      11,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   109,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    -1,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    -1,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      -1,    72,    73,    74,    75,    -1,    77,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
-       6,    -1,     8,     9,    10,    11,    12,    13,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    -1,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      -1,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    -1,    72,    73,    74,    75,
-      -1,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,
-      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   109,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    -1,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    -1,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      -1,    72,    73,    74,    75,    -1,    77,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    -1,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      -1,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    -1,    72,    73,    74,    75,
-      -1,    77,     3,     4,     5,     6,    -1,     8,     9,    10,
-      11,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    -1,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    -1,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      -1,    72,    73,    74,    75,    -1,    77,     4,     5,     6,
-      -1,    -1,    -1,    10,    11,    12,    13,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    -1,    -1,    -1,    -1,    -1,    45,    46,
-      47,    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    -1,    72,    73,    74,    -1,    -1,
-      77,    10,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,
+     109,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    -1,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    -1,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    -1,    72,    73,
+      74,    75,    -1,    77,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     3,     4,     5,     6,    -1,     8,
+       9,    10,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   109,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    -1,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    -1,    72,    73,    74,    75,    -1,    77,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     109,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    -1,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    -1,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    -1,    72,    73,
+      74,    75,    -1,    77,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    27,    28,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
-      49,    50,    -1,    -1,    -1,    54,    55,    -1,    57,    58,
+      39,    40,    41,    -1,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    -1,    72,    73,    74,    -1,    76,    77,    10,
-      11,    12,    13,    82,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    -1,
-      -1,    -1,    -1,    -1,    45,    46,    47,    48,    49,    50,
-      -1,    -1,    -1,    54,    55,    -1,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      -1,    72,    73,    74,    -1,    -1,    77
+      69,    70,    -1,    72,    73,    74,    75,    -1,    77,     3,
+       4,     5,     6,    -1,     8,     9,    10,    11,    12,    13,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    -1,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    -1,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    -1,    72,    73,
+      74,    75,    -1,    77,     4,     5,     6,    -1,    -1,    -1,
+      10,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,    49,
+      50,    -1,    -1,    -1,    54,    55,    -1,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    -1,    72,    73,    74,    -1,    -1,    77,    10,    11,
+      12,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    -1,    -1,
+      -1,    -1,    -1,    45,    46,    47,    48,    49,    50,    -1,
+      -1,    -1,    54,    55,    -1,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    -1,
+      72,    73,    74,    -1,    76,    77,    10,    11,    12,    13,
+      82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,
+      -1,    45,    46,    47,    48,    49,    50,    -1,    -1,    -1,
+      54,    55,    -1,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    -1,    72,    73,
+      74,    -1,    -1,    77
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1473,40 +1475,40 @@
       65,    66,    67,    68,    69,    70,    72,    73,    74,    75,
       77,   160,   161,   162,   163,   164,   169,   170,   171,   172,
      174,   175,   176,   177,   178,   181,   182,   183,   218,   219,
-     220,    44,    76,   172,   175,   177,    40,    41,    76,    77,
-     108,   129,   104,   114,   221,   105,   111,     9,    40,    41,
-      42,   166,   167,   173,   111,   114,    76,   129,   175,    76,
-     114,   159,   176,   181,   175,   106,     0,   219,   175,   181,
-     185,   108,    76,   179,   180,   108,   201,   166,   165,   168,
-     176,   167,   129,   104,   106,   113,   108,     3,   174,   176,
-     186,   187,    76,    78,    79,    80,    81,    82,    85,    86,
-     104,   107,   115,   116,   117,   118,   130,   131,   132,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     158,   181,   114,   186,   184,   113,   105,   111,    14,    15,
-      16,    18,    19,    20,    21,    22,    23,    24,    56,   108,
-     109,   114,   141,   154,   155,   157,   160,   161,   181,   191,
-     192,   193,   194,   202,   203,   204,   206,   208,   210,   217,
-     129,   165,   168,   106,   113,   107,   158,   155,   190,   176,
-     129,   188,   189,   109,   187,   141,   141,   157,    85,    86,
-     106,   110,   105,   105,   111,    55,   155,   104,   141,   119,
-     120,   121,   116,   118,    83,    84,    87,    88,   122,   123,
-      89,    90,   126,   125,   124,    91,    93,    92,   127,   107,
-     109,   186,    79,    80,   180,   114,   114,   212,   104,   104,
-     114,   114,   157,   104,   158,   112,   104,   109,   195,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   113,
-     156,   111,   114,   109,   192,   106,   107,   158,   190,   113,
-     107,   188,   106,   111,   114,    76,   114,   105,   133,   157,
-      76,    82,   136,   155,   141,   141,   141,   143,   143,   144,
-     144,   145,   145,   145,   145,   146,   146,   147,   148,   149,
-     150,   151,   152,   157,   109,   198,   199,   200,   213,   157,
-     114,   157,   112,   211,   202,   155,   155,   158,   113,   107,
-     190,   113,   114,   158,   189,   106,   114,   107,   112,    56,
-     201,   193,   191,   203,   214,   105,   105,   157,   171,   174,
-     209,   196,   107,   190,   113,   190,   107,   158,   155,   104,
-     209,   215,   216,   198,   205,   207,   129,   105,   109,   190,
-     107,   157,   114,   105,    17,   194,   113,   193,   197,   201,
-     114,   105,   157,   197,   198,   190,   114
+     220,    44,    76,   177,    40,    41,    76,    77,   108,   129,
+     104,   114,   221,   105,   111,     9,    40,    41,    42,   166,
+     167,   173,   111,   114,    76,   129,   175,    76,   114,   159,
+     176,   181,   175,   106,     0,   219,   181,   185,   108,    76,
+     179,   180,   108,   201,   166,   165,   168,   176,   167,   129,
+     104,   106,   113,   108,     3,   174,   176,   186,   187,    76,
+      78,    79,    80,    81,    82,    85,    86,   104,   107,   115,
+     116,   117,   118,   130,   131,   132,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   158,   181,   114,
+     186,   184,   113,   105,   111,    14,    15,    16,    18,    19,
+      20,    21,    22,    23,    24,    56,   108,   109,   114,   141,
+     154,   155,   157,   160,   161,   181,   191,   192,   193,   194,
+     202,   203,   204,   206,   208,   210,   217,   129,   165,   168,
+     106,   113,   107,   158,   155,   190,   176,   129,   188,   189,
+     109,   187,   141,   141,   157,    85,    86,   106,   110,   105,
+     105,   111,    55,   155,   104,   141,   119,   120,   121,   116,
+     118,    83,    84,    87,    88,   122,   123,    89,    90,   126,
+     125,   124,    91,    93,    92,   127,   107,   109,   186,    79,
+      80,   180,   114,   114,   212,   104,   104,   114,   114,   157,
+     104,   158,   112,   104,   109,   195,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,   113,   156,   111,   114,
+     109,   192,   106,   107,   158,   190,   113,   107,   188,   106,
+     111,   114,    76,   114,   105,   133,   157,    76,    82,   136,
+     155,   141,   141,   141,   143,   143,   144,   144,   145,   145,
+     145,   145,   146,   146,   147,   148,   149,   150,   151,   152,
+     157,   109,   198,   199,   200,   213,   157,   114,   157,   112,
+     211,   202,   155,   155,   158,   113,   107,   190,   113,   114,
+     158,   189,   106,   114,   107,   112,    56,   201,   193,   191,
+     203,   214,   105,   105,   157,   171,   174,   209,   196,   107,
+     190,   113,   190,   107,   158,   155,   104,   209,   215,   216,
+     198,   205,   207,   129,   105,   109,   190,   107,   157,   114,
+     105,    17,   194,   113,   193,   197,   201,   114,   105,   157,
+     197,   198,   190,   114
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1525,21 +1527,21 @@
      164,   165,   165,   166,   166,   166,   166,   167,   167,   167,
      167,   168,   169,   169,   169,   169,   169,   169,   170,   170,
      170,   170,   170,   170,   170,   171,   171,   172,   172,   173,
-     174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
-     175,   175,   175,   175,   175,   175,   176,   176,   177,   177,
-     177,   178,   179,   179,   180,   180,   180,   181,   181,   181,
+     174,   174,   174,   174,   174,   174,   174,   174,   175,   175,
+     175,   175,   175,   175,   176,   176,   177,   177,   177,   178,
+     179,   179,   180,   180,   180,   181,   181,   181,   182,   182,
      182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
      182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
      182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
      182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
-     182,   182,   182,   182,   182,   184,   183,   185,   183,   186,
-     186,   187,   187,   188,   188,   189,   189,   190,   191,   192,
-     192,   193,   193,   193,   193,   193,   193,   193,   194,   195,
-     196,   194,   197,   197,   199,   198,   200,   198,   201,   201,
-     202,   202,   203,   203,   204,   205,   205,   207,   206,   208,
-     208,   209,   209,   211,   210,   212,   210,   213,   210,   214,
-     214,   215,   215,   216,   216,   217,   217,   217,   217,   217,
-     218,   218,   219,   219,   221,   220
+     182,   182,   182,   184,   183,   185,   183,   186,   186,   187,
+     187,   188,   188,   189,   189,   190,   191,   192,   192,   193,
+     193,   193,   193,   193,   193,   193,   194,   195,   196,   194,
+     197,   197,   199,   198,   200,   198,   201,   201,   202,   202,
+     203,   203,   204,   205,   205,   207,   206,   208,   208,   209,
+     209,   211,   210,   212,   210,   213,   210,   214,   214,   215,
+     215,   216,   216,   217,   217,   217,   217,   217,   218,   218,
+     219,   219,   221,   220
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1558,21 +1560,21 @@
        3,     2,     5,     3,     2,     3,     2,     0,     1,     1,
        1,     1,     1,     3,     6,     7,     8,     5,     1,     2,
        5,     6,     7,     4,     2,     1,     2,     1,     1,     1,
-       1,     1,     2,     1,     2,     1,     1,     2,     2,     3,
-       1,     1,     1,     2,     2,     1,     1,     2,     1,     1,
-       1,     4,     1,     3,     1,     3,     3,     1,     3,     4,
+       1,     1,     2,     1,     2,     1,     1,     2,     1,     1,
+       1,     2,     2,     1,     1,     2,     1,     1,     1,     4,
+       1,     3,     1,     3,     3,     1,     3,     4,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     6,     0,     5,     1,
-       2,     3,     4,     1,     3,     1,     4,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
-       0,     5,     1,     1,     0,     2,     0,     2,     2,     3,
-       1,     2,     1,     2,     5,     3,     1,     0,     6,     3,
-       2,     1,     4,     0,     6,     0,     8,     0,     7,     1,
-       1,     1,     0,     2,     3,     2,     2,     2,     3,     2,
-       1,     2,     1,     1,     0,     3
+       1,     1,     1,     0,     6,     0,     5,     1,     2,     3,
+       4,     1,     3,     1,     4,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     2,     0,     0,     5,
+       1,     1,     0,     2,     0,     2,     2,     3,     1,     2,
+       1,     2,     5,     3,     1,     0,     6,     3,     2,     1,
+       4,     0,     6,     0,     8,     0,     7,     1,     1,     1,
+       0,     2,     3,     2,     2,     2,     3,     2,     1,     2,
+       1,     1,     0,     3
 };
 
 
@@ -3675,32 +3677,12 @@
   case 138:
 
     {
-        context->es3InvariantErrorCheck((yyvsp[0].interm.type).qualifier, (yylsp[-1]));
-        (yyval.interm.type).setBasic(EbtVoid, (yyvsp[0].interm.type).qualifier, (yylsp[0]));
-        (yyval.interm.type).invariant = true;
-    }
-
-    break;
-
-  case 139:
-
-    {
-        context->es3InvariantErrorCheck((yyvsp[0].interm.type).qualifier, (yylsp[-2]));
-        (yyval.interm.type) = context->joinInterpolationQualifiers((yylsp[-1]), (yyvsp[-1].interm.type).qualifier, (yylsp[0]), (yyvsp[0].interm.type).qualifier);
-        (yyval.interm.type).invariant = true;
-    }
-
-    break;
-
-  case 140:
-
-    {
         (yyval.interm.type).qualifier = EvqConst;
     }
 
     break;
 
-  case 141:
+  case 139:
 
     {
         ES3_ONLY("in", (yylsp[0]), "storage qualifier");
@@ -3709,7 +3691,7 @@
 
     break;
 
-  case 142:
+  case 140:
 
     {
         ES3_ONLY("out", (yylsp[0]), "storage qualifier");
@@ -3718,7 +3700,7 @@
 
     break;
 
-  case 143:
+  case 141:
 
     {
         ES3_ONLY("centroid in", (yylsp[-1]), "storage qualifier");
@@ -3732,7 +3714,7 @@
 
     break;
 
-  case 144:
+  case 142:
 
     {
         ES3_ONLY("centroid out", (yylsp[-1]), "storage qualifier");
@@ -3746,7 +3728,7 @@
 
     break;
 
-  case 145:
+  case 143:
 
     {
         if (context->globalErrorCheck((yylsp[0]), context->symbolTable.atGlobalLevel(), "uniform"))
@@ -3756,7 +3738,7 @@
 
     break;
 
-  case 146:
+  case 144:
 
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
@@ -3771,7 +3753,7 @@
 
     break;
 
-  case 147:
+  case 145:
 
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
@@ -3785,7 +3767,7 @@
 
     break;
 
-  case 148:
+  case 146:
 
     {
         (yyval.interm.precision) = EbpHigh;
@@ -3793,7 +3775,7 @@
 
     break;
 
-  case 149:
+  case 147:
 
     {
         (yyval.interm.precision) = EbpMedium;
@@ -3801,7 +3783,7 @@
 
     break;
 
-  case 150:
+  case 148:
 
     {
         (yyval.interm.precision) = EbpLow;
@@ -3809,7 +3791,7 @@
 
     break;
 
-  case 151:
+  case 149:
 
     {
         ES3_ONLY("layout", (yylsp[-3]), "qualifier");
@@ -3818,7 +3800,7 @@
 
     break;
 
-  case 152:
+  case 150:
 
     {
         (yyval.interm.layoutQualifier) = (yyvsp[0].interm.layoutQualifier);
@@ -3826,7 +3808,7 @@
 
     break;
 
-  case 153:
+  case 151:
 
     {
         (yyval.interm.layoutQualifier) = context->joinLayoutQualifiers((yyvsp[-2].interm.layoutQualifier), (yyvsp[0].interm.layoutQualifier));
@@ -3834,7 +3816,7 @@
 
     break;
 
-  case 154:
+  case 152:
 
     {
         (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[0].lex).string, (yylsp[0]));
@@ -3842,31 +3824,31 @@
 
     break;
 
+  case 153:
+
+    {
+        (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), *(yyvsp[0].lex).string, (yyvsp[0].lex).i, (yylsp[0]));
+    }
+
+    break;
+
+  case 154:
+
+    {
+        (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), *(yyvsp[0].lex).string, (yyvsp[0].lex).i, (yylsp[0]));
+    }
+
+    break;
+
   case 155:
 
     {
-        (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), *(yyvsp[0].lex).string, (yyvsp[0].lex).i, (yylsp[0]));
-    }
-
-    break;
-
-  case 156:
-
-    {
-        (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), *(yyvsp[0].lex).string, (yyvsp[0].lex).i, (yylsp[0]));
-    }
-
-    break;
-
-  case 157:
-
-    {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
 
     break;
 
-  case 158:
+  case 156:
 
     {
         ES3_ONLY("[]", (yylsp[-1]), "implicitly sized array");
@@ -3876,7 +3858,7 @@
 
     break;
 
-  case 159:
+  case 157:
 
     {
         (yyval.interm.type) = (yyvsp[-3].interm.type);
@@ -3893,7 +3875,7 @@
 
     break;
 
-  case 160:
+  case 158:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3902,7 +3884,7 @@
 
     break;
 
-  case 161:
+  case 159:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3911,7 +3893,7 @@
 
     break;
 
-  case 162:
+  case 160:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3920,7 +3902,7 @@
 
     break;
 
-  case 163:
+  case 161:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3929,7 +3911,7 @@
 
     break;
 
-  case 164:
+  case 162:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3938,12 +3920,32 @@
 
     break;
 
+  case 163:
+
+    {
+        TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
+        (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0]));
+        (yyval.interm.type).setAggregate(2);
+    }
+
+    break;
+
+  case 164:
+
+    {
+        TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
+        (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0]));
+        (yyval.interm.type).setAggregate(3);
+    }
+
+    break;
+
   case 165:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0]));
-        (yyval.interm.type).setAggregate(2);
+        (yyval.interm.type).setAggregate(4);
     }
 
     break;
@@ -3952,8 +3954,8 @@
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
-        (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0]));
-        (yyval.interm.type).setAggregate(3);
+        (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[0]));
+        (yyval.interm.type).setAggregate(2);
     }
 
     break;
@@ -3962,8 +3964,8 @@
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
-        (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0]));
-        (yyval.interm.type).setAggregate(4);
+        (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[0]));
+        (yyval.interm.type).setAggregate(3);
     }
 
     break;
@@ -3973,7 +3975,7 @@
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[0]));
-        (yyval.interm.type).setAggregate(2);
+        (yyval.interm.type).setAggregate(4);
     }
 
     break;
@@ -3982,8 +3984,8 @@
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
-        (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[0]));
-        (yyval.interm.type).setAggregate(3);
+        (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[0]));
+        (yyval.interm.type).setAggregate(2);
     }
 
     break;
@@ -3992,8 +3994,8 @@
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
-        (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[0]));
-        (yyval.interm.type).setAggregate(4);
+        (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[0]));
+        (yyval.interm.type).setAggregate(3);
     }
 
     break;
@@ -4003,7 +4005,7 @@
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[0]));
-        (yyval.interm.type).setAggregate(2);
+        (yyval.interm.type).setAggregate(4);
     }
 
     break;
@@ -4012,8 +4014,8 @@
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
-        (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[0]));
-        (yyval.interm.type).setAggregate(3);
+        (yyval.interm.type).setBasic(EbtUInt, qual, (yylsp[0]));
+        (yyval.interm.type).setAggregate(2);
     }
 
     break;
@@ -4022,8 +4024,8 @@
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
-        (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[0]));
-        (yyval.interm.type).setAggregate(4);
+        (yyval.interm.type).setBasic(EbtUInt, qual, (yylsp[0]));
+        (yyval.interm.type).setAggregate(3);
     }
 
     break;
@@ -4033,32 +4035,12 @@
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtUInt, qual, (yylsp[0]));
-        (yyval.interm.type).setAggregate(2);
-    }
-
-    break;
-
-  case 175:
-
-    {
-        TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
-        (yyval.interm.type).setBasic(EbtUInt, qual, (yylsp[0]));
-        (yyval.interm.type).setAggregate(3);
-    }
-
-    break;
-
-  case 176:
-
-    {
-        TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
-        (yyval.interm.type).setBasic(EbtUInt, qual, (yylsp[0]));
         (yyval.interm.type).setAggregate(4);
     }
 
     break;
 
-  case 177:
+  case 175:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4068,7 +4050,7 @@
 
     break;
 
-  case 178:
+  case 176:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4078,7 +4060,7 @@
 
     break;
 
-  case 179:
+  case 177:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4088,7 +4070,7 @@
 
     break;
 
-  case 180:
+  case 178:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4098,7 +4080,7 @@
 
     break;
 
-  case 181:
+  case 179:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4108,7 +4090,7 @@
 
     break;
 
-  case 182:
+  case 180:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4118,7 +4100,7 @@
 
     break;
 
-  case 183:
+  case 181:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4128,7 +4110,7 @@
 
     break;
 
-  case 184:
+  case 182:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4138,7 +4120,7 @@
 
     break;
 
-  case 185:
+  case 183:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4148,7 +4130,7 @@
 
     break;
 
-  case 186:
+  case 184:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4157,7 +4139,7 @@
 
     break;
 
-  case 187:
+  case 185:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4166,7 +4148,7 @@
 
     break;
 
-  case 188:
+  case 186:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4175,7 +4157,7 @@
 
     break;
 
-  case 189:
+  case 187:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4184,7 +4166,7 @@
 
     break;
 
-  case 190:
+  case 188:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4193,7 +4175,7 @@
 
     break;
 
-  case 191:
+  case 189:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4202,7 +4184,7 @@
 
     break;
 
-  case 192:
+  case 190:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4211,7 +4193,7 @@
 
     break;
 
-  case 193:
+  case 191:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4220,7 +4202,7 @@
 
     break;
 
-  case 194:
+  case 192:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4229,7 +4211,7 @@
 
     break;
 
-  case 195:
+  case 193:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4238,7 +4220,7 @@
 
     break;
 
-  case 196:
+  case 194:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4247,7 +4229,7 @@
 
     break;
 
-  case 197:
+  case 195:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4256,7 +4238,7 @@
 
     break;
 
-  case 198:
+  case 196:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4265,7 +4247,7 @@
 
     break;
 
-  case 199:
+  case 197:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4274,7 +4256,7 @@
 
     break;
 
-  case 200:
+  case 198:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -4283,7 +4265,7 @@
 
     break;
 
-  case 201:
+  case 199:
 
     {
         if (!context->supportsExtension("GL_OES_EGL_image_external")) {
@@ -4296,7 +4278,7 @@
 
     break;
 
-  case 202:
+  case 200:
 
     {
         if (!context->supportsExtension("GL_ARB_texture_rectangle")) {
@@ -4309,7 +4291,7 @@
 
     break;
 
-  case 203:
+  case 201:
 
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
@@ -4318,7 +4300,7 @@
 
     break;
 
-  case 204:
+  case 202:
 
     {
         //
@@ -4333,13 +4315,13 @@
 
     break;
 
-  case 205:
+  case 203:
 
     { if (context->enterStructDeclaration((yylsp[-1]), *(yyvsp[-1].lex).string)) context->recover(); }
 
     break;
 
-  case 206:
+  case 204:
 
     {
         (yyval.interm.type) = context->addStructure((yylsp[-5]), (yylsp[-4]), (yyvsp[-4].lex).string, (yyvsp[-1].interm.fieldList));
@@ -4347,13 +4329,13 @@
 
     break;
 
-  case 207:
+  case 205:
 
     { if (context->enterStructDeclaration((yylsp[0]), *(yyvsp[0].lex).string)) context->recover(); }
 
     break;
 
-  case 208:
+  case 206:
 
     {
         (yyval.interm.type) = context->addStructure((yylsp[-4]), (yyloc), NewPoolTString(""), (yyvsp[-1].interm.fieldList));
@@ -4361,7 +4343,7 @@
 
     break;
 
-  case 209:
+  case 207:
 
     {
         (yyval.interm.fieldList) = (yyvsp[0].interm.fieldList);
@@ -4369,7 +4351,7 @@
 
     break;
 
-  case 210:
+  case 208:
 
     {
         (yyval.interm.fieldList) = (yyvsp[-1].interm.fieldList);
@@ -4387,7 +4369,7 @@
 
     break;
 
-  case 211:
+  case 209:
 
     {
         (yyval.interm.fieldList) = context->addStructDeclaratorList((yyvsp[-2].interm.type), (yyvsp[-1].interm.fieldList));
@@ -4395,7 +4377,7 @@
 
     break;
 
-  case 212:
+  case 210:
 
     {
         // ES3 Only, but errors should be handled elsewhere
@@ -4406,7 +4388,7 @@
 
     break;
 
-  case 213:
+  case 211:
 
     {
         (yyval.interm.fieldList) = NewPoolTFieldList();
@@ -4415,7 +4397,7 @@
 
     break;
 
-  case 214:
+  case 212:
 
     {
         (yyval.interm.fieldList)->push_back((yyvsp[0].interm.field));
@@ -4423,7 +4405,7 @@
 
     break;
 
-  case 215:
+  case 213:
 
     {
         if (context->reservedErrorCheck((yylsp[0]), *(yyvsp[0].lex).string))
@@ -4435,7 +4417,7 @@
 
     break;
 
-  case 216:
+  case 214:
 
     {
         if (context->reservedErrorCheck((yylsp[-3]), *(yyvsp[-3].lex).string))
@@ -4452,12 +4434,24 @@
 
     break;
 
-  case 217:
+  case 215:
 
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
 
     break;
 
+  case 216:
+
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+
+    break;
+
+  case 217:
+
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermAggregate); }
+
+    break;
+
   case 218:
 
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
@@ -4466,7 +4460,7 @@
 
   case 219:
 
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermAggregate); }
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
 
     break;
 
@@ -4484,59 +4478,47 @@
 
   case 222:
 
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermSwitch); }
 
     break;
 
   case 223:
 
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermCase); }
 
     break;
 
   case 224:
 
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermSwitch); }
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
 
     break;
 
   case 225:
 
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermCase); }
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
 
     break;
 
   case 226:
 
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+    { (yyval.interm.intermAggregate) = 0; }
 
     break;
 
   case 227:
 
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+    { context->symbolTable.push(); }
 
     break;
 
   case 228:
 
-    { (yyval.interm.intermAggregate) = 0; }
-
-    break;
-
-  case 229:
-
-    { context->symbolTable.push(); }
-
-    break;
-
-  case 230:
-
     { context->symbolTable.pop(); }
 
     break;
 
-  case 231:
+  case 229:
 
     {
         if ((yyvsp[-2].interm.intermAggregate) != 0) {
@@ -4548,18 +4530,30 @@
 
     break;
 
-  case 232:
+  case 230:
 
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
 
     break;
 
-  case 233:
+  case 231:
 
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
 
     break;
 
+  case 232:
+
+    { context->symbolTable.push(); }
+
+    break;
+
+  case 233:
+
+    { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+
+    break;
+
   case 234:
 
     { context->symbolTable.push(); }
@@ -4574,25 +4568,13 @@
 
   case 236:
 
-    { context->symbolTable.push(); }
-
-    break;
-
-  case 237:
-
-    { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-
-    break;
-
-  case 238:
-
     {
         (yyval.interm.intermNode) = 0;
     }
 
     break;
 
-  case 239:
+  case 237:
 
     {
         if ((yyvsp[-1].interm.intermAggregate)) {
@@ -4604,7 +4586,7 @@
 
     break;
 
-  case 240:
+  case 238:
 
     {
         (yyval.interm.intermAggregate) = context->intermediate.makeAggregate((yyvsp[0].interm.intermNode), (yyloc));
@@ -4612,7 +4594,7 @@
 
     break;
 
-  case 241:
+  case 239:
 
     {
         (yyval.interm.intermAggregate) = context->intermediate.growAggregate((yyvsp[-1].interm.intermAggregate), (yyvsp[0].interm.intermNode), (yyloc));
@@ -4620,19 +4602,19 @@
 
     break;
 
-  case 242:
+  case 240:
 
     { (yyval.interm.intermNode) = 0; }
 
     break;
 
-  case 243:
+  case 241:
 
     { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
 
     break;
 
-  case 244:
+  case 242:
 
     {
         if (context->boolErrorCheck((yylsp[-4]), (yyvsp[-2].interm.intermTypedNode)))
@@ -4642,7 +4624,7 @@
 
     break;
 
-  case 245:
+  case 243:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
@@ -4651,7 +4633,7 @@
 
     break;
 
-  case 246:
+  case 244:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
@@ -4660,13 +4642,13 @@
 
     break;
 
-  case 247:
+  case 245:
 
     { ++context->mSwitchNestingLevel; }
 
     break;
 
-  case 248:
+  case 246:
 
     {
         (yyval.interm.intermSwitch) = context->addSwitch((yyvsp[-3].interm.intermTypedNode), (yyvsp[0].interm.intermAggregate), (yylsp[-5]));
@@ -4675,7 +4657,7 @@
 
     break;
 
-  case 249:
+  case 247:
 
     {
         (yyval.interm.intermCase) = context->addCase((yyvsp[-1].interm.intermTypedNode), (yylsp[-2]));
@@ -4683,7 +4665,7 @@
 
     break;
 
-  case 250:
+  case 248:
 
     {
         (yyval.interm.intermCase) = context->addDefault((yylsp[-1]));
@@ -4691,7 +4673,7 @@
 
     break;
 
-  case 251:
+  case 249:
 
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
@@ -4701,7 +4683,7 @@
 
     break;
 
-  case 252:
+  case 250:
 
     {
         TIntermNode *intermNode;
@@ -4718,13 +4700,13 @@
 
     break;
 
-  case 253:
+  case 251:
 
     { context->symbolTable.push(); ++context->mLoopNestingLevel; }
 
     break;
 
-  case 254:
+  case 252:
 
     {
         context->symbolTable.pop();
@@ -4734,13 +4716,13 @@
 
     break;
 
-  case 255:
+  case 253:
 
     { ++context->mLoopNestingLevel; }
 
     break;
 
-  case 256:
+  case 254:
 
     {
         if (context->boolErrorCheck((yylsp[0]), (yyvsp[-2].interm.intermTypedNode)))
@@ -4752,13 +4734,13 @@
 
     break;
 
-  case 257:
+  case 255:
 
     { context->symbolTable.push(); ++context->mLoopNestingLevel; }
 
     break;
 
-  case 258:
+  case 256:
 
     {
         context->symbolTable.pop();
@@ -4768,31 +4750,31 @@
 
     break;
 
+  case 257:
+
+    {
+        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+    }
+
+    break;
+
+  case 258:
+
+    {
+        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+    }
+
+    break;
+
   case 259:
 
     {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
-    }
-
-    break;
-
-  case 260:
-
-    {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
-    }
-
-    break;
-
-  case 261:
-
-    {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
 
     break;
 
-  case 262:
+  case 260:
 
     {
         (yyval.interm.intermTypedNode) = 0;
@@ -4800,7 +4782,7 @@
 
     break;
 
-  case 263:
+  case 261:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
@@ -4809,7 +4791,7 @@
 
     break;
 
-  case 264:
+  case 262:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
@@ -4818,7 +4800,7 @@
 
     break;
 
-  case 265:
+  case 263:
 
     {
         (yyval.interm.intermNode) = context->addBranch(EOpContinue, (yylsp[-1]));
@@ -4826,7 +4808,7 @@
 
     break;
 
-  case 266:
+  case 264:
 
     {
         (yyval.interm.intermNode) = context->addBranch(EOpBreak, (yylsp[-1]));
@@ -4834,7 +4816,7 @@
 
     break;
 
-  case 267:
+  case 265:
 
     {
         (yyval.interm.intermNode) = context->addBranch(EOpReturn, (yylsp[-1]));
@@ -4842,7 +4824,7 @@
 
     break;
 
-  case 268:
+  case 266:
 
     {
         (yyval.interm.intermNode) = context->addBranch(EOpReturn, (yyvsp[-1].interm.intermTypedNode), (yylsp[-2]));
@@ -4850,7 +4832,7 @@
 
     break;
 
-  case 269:
+  case 267:
 
     {
         FRAG_ONLY("discard", (yylsp[-1]));
@@ -4859,7 +4841,7 @@
 
     break;
 
-  case 270:
+  case 268:
 
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
@@ -4868,7 +4850,7 @@
 
     break;
 
-  case 271:
+  case 269:
 
     {
         (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode), (yyloc));
@@ -4877,25 +4859,25 @@
 
     break;
 
+  case 270:
+
+    {
+        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+    }
+
+    break;
+
+  case 271:
+
+    {
+        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+    }
+
+    break;
+
   case 272:
 
     {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
-    }
-
-    break;
-
-  case 273:
-
-    {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
-    }
-
-    break;
-
-  case 274:
-
-    {
         TFunction* function = (yyvsp[0].interm).function;
         
         const TSymbol *builtIn = context->symbolTable.findBuiltIn(function->getMangledName(), context->shaderVersion);
@@ -4989,7 +4971,7 @@
 
     break;
 
-  case 275:
+  case 273:
 
     {
         //?? Check that all paths return a value if return type != void ?
diff --git a/src/compiler/translator/util.cpp b/src/compiler/translator/util.cpp
index b0fdb86..6668a20 100644
--- a/src/compiler/translator/util.cpp
+++ b/src/compiler/translator/util.cpp
@@ -299,10 +299,6 @@
     {
       case EvqVaryingIn:
       case EvqVaryingOut:
-      case EvqVertexOut:
-      case EvqSmoothOut:
-      case EvqFlatOut:
-      case EvqCentroidOut:
         if (mSymbolTable.isVaryingInvariant(std::string(name.c_str())) || type.isInvariant())
         {
             variable->isInvariant = true;