glsl2: Add the 1.30 reserved keywords.
authorKenneth Graunke <kenneth@whitecape.org>
Sat, 7 Aug 2010 07:50:08 +0000 (00:50 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 7 Aug 2010 07:51:30 +0000 (00:51 -0700)
src/glsl/glsl_lexer.cpp
src/glsl/glsl_lexer.lpp
src/glsl/glsl_parser.cpp
src/glsl/glsl_parser.h
src/glsl/glsl_parser.ypp

index 43be3170ba8e341091d2cde5789877db4a1e75a5..672b0b1359953cce555b15f25bc34addfcd1a8c6 100644 (file)
@@ -54,6 +54,7 @@ typedef int flex_int32_t;
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -84,8 +85,6 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#endif /* ! C99 */
-
 #endif /* ! FLEXINT_H */
 
 #ifdef __cplusplus
@@ -159,15 +158,7 @@ typedef void* yyscan_t;
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
 #define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -358,8 +349,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
        *yy_cp = '\0'; \
        yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 147
-#define YY_END_OF_BUFFER 148
+#define YY_NUM_RULES 177
+#define YY_END_OF_BUFFER 178
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -367,66 +358,81 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[525] =
+static yyconst flex_int16_t yy_accept[668] =
     {   0,
-        0,    0,    9,    9,  148,  146,    1,   14,  146,  146,
-      146,  146,  146,  146,  146,  146,   90,   88,  146,  146,
-      146,  145,  146,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  146,    1,  146,   85,  147,    9,   13,
-      147,   12,   10,   11,    1,   74,   81,   75,   84,   78,
+        0,    0,    9,    9,  178,  176,    1,   14,  176,  176,
+      176,  176,  176,  176,  176,  176,   90,   88,  176,  176,
+      176,  175,  176,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  176,    1,  176,   85,  177,    9,   13,
+      177,   12,   10,   11,    1,   74,   81,   75,   84,   78,
        69,   80,   70,   87,   92,   79,   93,   90,    0,    0,
-       95,    0,   88,    0,   71,   73,   72,    0,  145,   77,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,   22,  145,  145,  145,  145,  145,  145,  145,  145,
-
-      145,  145,  145,  145,  145,   26,   50,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,   86,   76,    1,    0,    0,
-        2,    0,    0,    0,    0,    9,    8,   12,   11,    0,
-       92,   91,    0,   93,    0,   94,   89,   82,   83,   98,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,   25,
-      145,  145,  145,  145,  145,  145,  145,  145,   19,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,   51,
-
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,    0,    0,    0,    0,    8,    0,   92,
-        0,   91,    0,   93,   94,  145,   17,  145,  145,  138,
-      145,  145,  145,  145,  145,  145,  145,  145,   24,  101,
-      145,  145,  145,   57,  145,  145,  106,  120,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  117,  141,   38,
-       39,   40,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  104,
-       96,  145,  145,  145,  145,  145,  145,   35,   36,   37,
-
-       67,  145,  145,    0,    0,    0,    0,    0,   91,  145,
-       20,   29,   30,   31,  145,   99,   16,  145,  145,  145,
-      145,  128,  129,  130,  145,   97,  121,   18,  131,  132,
-      133,  143,  125,  126,  127,  145,   52,  123,  145,  145,
-       32,   33,   34,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  118,  145,  145,
-      145,  145,  145,  145,  145,  145,  100,  145,  140,  145,
-      145,   23,    0,    0,    0,    0,  145,  145,  145,  145,
-      145,  119,  114,  109,  145,  145,   68,   41,   42,   43,
-       44,   45,   46,   47,   48,   49,  145,  145,  145,  145,
-
-      124,  105,  145,  112,   28,  145,  137,   58,  113,   66,
-      107,  145,  145,  145,  145,  145,  145,    0,    0,    0,
-        0,  145,  145,  145,  108,   27,  145,  145,  145,  142,
-      145,  145,  145,  145,  145,  145,  102,   53,  145,   54,
-      145,    0,    0,    0,    7,    0,  145,   55,   21,  115,
-      145,  145,  145,  110,  145,  145,  145,  145,  145,  145,
-      103,  122,  111,    0,    0,    6,    0,    0,    0,    3,
-       15,  116,   56,  139,  145,  144,   60,   61,   62,  145,
-        0,    0,    0,    0,  145,  145,  145,  145,  145,  145,
-        4,    0,    5,    0,    0,    0,  145,  145,  145,  145,
-
-      145,   63,    0,  145,  145,  145,  145,  145,   59,  145,
-      134,  145,  135,  145,  145,  145,   64,  145,   65,  145,
-      145,  145,  136,    0
+       95,    0,   88,    0,   71,   73,   72,    0,  175,   77,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,   22,  175,  175,  175,  175,  175,  175,  175,
+
+      175,  175,  175,  175,  175,  175,   26,  175,  175,   50,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,   86,   76,    1,    0,    0,    2,    0,    0,    0,
+        0,    9,    8,   12,   11,    0,   92,   91,    0,   93,
+        0,   94,   89,   82,   83,  175,   98,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,   25,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,   19,
+
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+       51,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,    0,    0,
+        0,    0,    8,    0,   92,    0,   91,    0,   93,   94,
+      175,  175,   17,  175,  175,  138,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,   24,  101,  175,  175,  175,
+      175,   57,  175,  175,  106,  120,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  117,  141,   38,
+       39,   40,  175,  175,  175,  175,  175,  175,  175,  175,
+
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  104,   96,  175,  175,  175,  175,  175,  175,
+      175,   35,   36,   37,   67,  175,  175,    0,    0,    0,
+        0,    0,   91,  175,  175,   20,   29,   30,   31,  175,
+       99,  175,   16,  175,  175,  175,  175,  128,  129,  130,
+      175,   97,  175,  121,   18,  131,  132,  133,  143,  125,
+      126,  127,  175,  175,  175,   52,  123,  175,  175,   32,
+       33,   34,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  118,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  100,
+
+      175,  140,  175,  175,   23,    0,    0,    0,    0,  147,
+      175,  175,  145,  175,  175,  175,  119,  114,  150,  175,
+      175,  175,  175,  175,  175,  109,  175,  175,   68,   41,
+       42,   43,   44,   45,   46,   47,   48,   49,  175,  175,
+      175,  175,  124,  105,  175,  175,  112,   28,  175,  175,
+      137,   58,  113,   66,  148,  107,  175,  175,  175,  175,
+      175,  175,  175,    0,    0,    0,    0,  175,  175,  175,
+      108,   27,  175,  175,  175,  175,  175,  175,  151,  152,
+      153,  175,  175,  175,  175,  142,  175,  175,  175,  175,
+      175,  175,  175,  175,  102,  175,  175,  175,  175,  175,
+
+       53,  175,   54,  175,    0,    0,    0,    7,    0,  175,
+       55,   21,  115,  155,  156,  157,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  110,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  103,  159,  160,
+      161,  175,  175,  122,  111,    0,    0,    6,    0,    0,
+        0,    3,   15,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  154,  116,   56,  139,  175,  146,  144,  174,
+       60,   61,   62,  175,  175,  175,  175,  175,  175,    0,
+        0,    0,    0,  175,  175,  175,  158,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+
+      175,  175,  162,    4,    0,    5,    0,    0,    0,  175,
+      175,  175,  175,  175,  175,  175,  171,  175,  175,  175,
+      175,  175,  175,   63,  175,  175,  175,    0,  175,  175,
+      172,  163,  175,  164,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  173,  165,  166,  169,  170,   59,  175,
+      134,  175,  135,  149,  167,  168,  175,  175,  175,   64,
+      175,   65,  175,  175,  175,  136,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -437,14 +443,14 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    2,    5,    1,    6,    1,    7,    8,    1,    1,
         1,    9,   10,    1,   11,   12,   13,   14,   15,   16,
        17,   18,   19,   19,   19,   20,   20,   21,    1,   22,
-       23,   24,    1,    1,   25,   25,   26,   27,   28,   29,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   31,   32,   30,   30,   30,   30,   33,   30,   30,
-        1,    1,    1,   34,   30,    1,   35,   36,   37,   38,
-
-       39,   40,   41,   42,   43,   30,   44,   45,   46,   47,
-       48,   49,   30,   50,   51,   52,   53,   54,   55,   56,
-       57,   58,    1,   59,    1,    1,    1,    1,    1,    1,
+       23,   24,    1,    1,   25,   26,   27,   28,   29,   30,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   32,   33,   31,   31,   31,   31,   34,   31,   31,
+        1,    1,    1,   35,   36,    1,   37,   38,   39,   40,
+
+       41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+       51,   52,   31,   53,   54,   55,   56,   57,   58,   59,
+       60,   61,    1,   62,    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,
@@ -461,342 +467,415 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[60] =
+static yyconst flex_int32_t yy_meta[63] =
     {   0,
-        1,    2,    3,    1,    1,    1,    1,    1,    1,    4,
-        4,    1,    1,    5,    5,    5,    5,    5,    5,    6,
-        1,    1,    1,    1,    7,    7,    7,    8,    8,    9,
-        9,    9,   10,    1,    7,    7,    7,    7,    8,    8,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,   10,    9,    9,    1
+        1,    2,    3,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    4,    4,    4,    4,    4,    4,    5,
+        1,    1,    1,    1,    6,    6,    6,    6,    5,    5,
+        7,    7,    7,    8,    1,    7,    6,    6,    6,    6,
+        5,    5,    7,    7,    7,    7,    7,    7,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    7,    8,    7,
+        7,    1
     } ;
 
-static yyconst flex_int16_t yy_base[542] =
+static yyconst flex_int16_t yy_base[678] =
     {   0,
-        0,   58,   81,    0,  814,  815,   59,  815,  790,  789,
-       54,  788,   55,   56,   54,  787,  129,  174,   53,  786,
-      127,    0,  774,  101,  106,  126,  116,  128,  152,  759,
-      161,  158,  128,  142,  131,  753,  166,  766,  175,  181,
-      131,  187,  762,  149,  205,  222,  780,  815,  230,  815,
-      789,  225,  815,    0,  244,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  223,  815,  225,  200,  265,  218,
-      815,    0,    0,  778,  815,  815,  815,  777,    0,  815,
-      753,  746,  749,  757,  756,  743,  746,  757,  744,  750,
-      738,  735,  748,  735,  732,  732,  738,  726,  132,  731,
-
-      741,  727,  733,  736,  737,    0,  221,  736,  717,  200,
-      721,  734,  725,  225,  718,  732,  729,  731,  714,  719,
-      716,  705,  714,  222,  718,  714,  716,  705,  708,  207,
-      713,  705,  717,  243,  710,  815,  815,  285,  257,  295,
-      815,  696,  708,  700,  710,  288,    0,  298,    0,  226,
-      815,  280,  289,  815,  307,  318,    0,  815,  815,    0,
-      698,  702,  711,  708,  692,  691,  691,  279,  706,  703,
-      703,  701,  698,  690,  696,  683,  694,  680,  696,    0,
-      693,  681,  688,  685,  689,  682,  671,  670,  683,  686,
-      683,  671,  677,  668,  319,  673,  676,  667,  674,  663,
-
-      667,  673,  664,  655,  658,  656,  666,  656,  651,  649,
-      649,  651,  648,  659,  658,  255,  653,  648,  637,  325,
-      655,  657,  646,  638,  642,  653,  637,    0,  336,  328,
-      322,  815,  345,  356,  815,  643,    0,  641,  353,    0,
-      634,  632,  630,  638,  627,  644,  633,  356,    0,    0,
-      627,  637,  637,    0,  622,  359,    0,    0,  624,  362,
-      625,  619,  618,  619,  618,  365,  614,    0,    0,  610,
-      609,  608,  610,  611,  616,  610,  606,  619,  614,  613,
-      605,  609,  601,  604,  599,  607,  612,  611,  602,    0,
-        0,  608,  597,  597,  602,  601,  598,    0,    0,    0,
-
-        0,  588,  600,  599,  598,  595,  584,  372,  383,  598,
-        0,    0,    0,    0,  585,    0,    0,  585,  586,  580,
-      590,    0,    0,    0,  581,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  588,    0,    0,  586,  582,
-        0,    0,    0,  572,  381,  384,  387,  577,  573,  578,
-      569,  567,  580,  566,  579,  568,  575,    0,  573,  570,
-      574,  558,  567,  573,  568,  556,    0,  558,    0,  557,
-      560,    0,  555,  599,  554,  556,  545,  554,  543,  543,
-      556,    0,  558,    0,  557,  556,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  541,  554,  541,  538,
-
-        0,    0,  543,    0,    0,  535,    0,    0,    0,    0,
-        0,  532,  543,  536,  542,  539,  534,  527,  411,  542,
-      522,  514,  527,  525,    0,    0,  518,  524,  505,    0,
-      510,  504,  503,  493,  391,  501,    0,    0,  500,    0,
-      480,  465,  407,  343,  815,  457,  449,    0,    0,    0,
-      448,  434,  446,    0,  447,  436,  455,  454,  453,  426,
-        0,    0,    0,  430,  418,  815,  431,    0,  412,  815,
-        0,    0,    0,    0,  425,    0,  444,  387,  444,  438,
-      426,  433,  435,  439,  422,  422,  423,  419,  421,  420,
-      815,  441,  815,  453,    0,  449,  404,  422,  402,  389,
-
-      385,    0,  451,  377,  373,  343,  346,  296,    0,  262,
-      275,  253,    0,  223,  207,  144,    0,  148,    0,  104,
-       32,   11,    0,  815,  485,  491,  497,  501,  506,  508,
-      516,  523,  526,  529,  534,  543,  548,  550,  557,  566,
-      568
+        0,   61,   84,    0, 1012, 1013,   62, 1013,  988,  987,
+       57,  986,   58,   59,   57,  985,  135,  183,   56,  984,
+      133,    0,  971,  119,  109,  130,  134,  111,  135,  954,
+      151,  165,   32,  152,  131,  948,  153,  170,  182,  176,
+      178,  193,  959,  125,  237,  243,  979, 1013,  214, 1013,
+      988,  233, 1013,    0,  231, 1013, 1013, 1013, 1013, 1013,
+     1013, 1013, 1013, 1013,  225, 1013,  227,  224,  289,  260,
+     1013,    0,    0,  977, 1013, 1013, 1013,  976,    0, 1013,
+      943,  948,  941,  944,  953,  952,  938,  941,  953,  155,
+      947,  934,  931,  945,  931,  928,  928,  934,  213,  222,
+
+      928,  939,  924,  930,  934,  935,    0,  926,  937,  237,
+      932,  912,  232,  916,  930,  920,  241,  913,  257,  926,
+      928,  910,  906,  914,  911,  900,  909,  228,  907,  913,
+      908,  911,  899,  902,  904,  257,  907,  898,  911,  215,
+      904, 1013, 1013,  310,  295,  318, 1013,  889,  902,  893,
+      904,  260,    0,  308,    0,  362, 1013,  303,  373, 1013,
+      380,  387,    0, 1013, 1013,  899,    0,  890,  894,  904,
+      901,  884,  883,  883,  887,  280,  898,  895,  895,  893,
+      890,  881,  888,  874,  872,  885,  870,  887,    0,  884,
+      871,  879,  876,  880,  881,  874,  871,  859,  858,  872,
+
+      875,  872,  859,  866,  856,  321,  862,  865,  855,  863,
+      851,  855,  846,  861,  851,  842,  861,  844,  842,  853,
+      842,  837,  835,  849,  834,  836,  833,  845,  844,  847,
+      298,  838,  832,  821,  337,  840,  842,  830,  822,  826,
+      838,  821,    0,  394,  404,  421, 1013,  433,  440, 1013,
+      816,  827,    0,  824,  340,    0,  817,  815,  817,  812,
+      821,  809,  827,  815,  344,    0,    0,  809,  820,  819,
+      819,    0,  803,  347,    0,    0,  805,  351,  813,  814,
+      804,  798,  797,  798,  797,  409,  793,    0,    0,  789,
+      788,  787,  789,  790,  795,  789,  785,  799,  794,  793,
+
+      792,  783,  786,  786,  778,  781,  776,  785,  790,  775,
+      788,  778,    0,    0,  785,  781,  772,  772,  778,  777,
+      774,    0,    0,    0,    0,  763,  776,  775,  774,  771,
+      759,  447,  457,  771,  773,    0,    0,    0,    0,  759,
+        0,  759,    0,  758,  759,  753,  764,    0,    0,    0,
+      754,    0,  750,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  761,  463,  760,    0,    0,  758,  754,    0,
+        0,    0,  743,  426,  467,  475,  748,  744,  750,  740,
+      738,  752,  736,  736,  750,  738,  750,  745,    0,  743,
+      740,  744,  727,  729,  736,  742,  737,  736,  723,    0,
+
+      725,    0,  724,  728,    0,  722,  769,  721,  724,    0,
+      712,  722,    0,  710,  710,  724,    0,  726,    0,  479,
+      734,  733,  732,  703,  702,    0,  720,  719,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  703,  717,
+      703,  700,    0,    0,  706,  705,    0,    0,  703,  695,
+        0,    0,    0,    0,    0,    0,  692,  704,  485,  696,
+      703,  700,  694,  687,  501,  703,  688,  683,  697,  695,
+        0,    0,  687,  706,  705,  704,  675,  674,  317,  489,
+        0,  687,  690,  688,  676,    0,  686,  683,  682,  671,
+      670,  669,  508,  678,    0,  690,  689,  688,  659,  658,
+
+        0,  673,    0,  671,  666,  495,  524, 1013,  660,  668,
+        0,    0,    0,  683,  682,    0,  664,  667,  651,  659,
+      649,  657,  658,  658,  657,  642,  655,    0,  656,  644,
+      643,  639,  663,  662,  661,  632,  631,    0,  661,  660,
+        0,  642,  645,    0,    0,  631,  543, 1013,  534,    0,
+      553, 1013,    0,  628,  627,  637,  637,  624,  639,  622,
+      637,  632,    0,    0,    0,    0,  617,    0,    0,    0,
+      638,  353,  638,  627,  630,  614,  613,  623,  623,  613,
+      530,  563,  413,  609,  608,  619,    0,  622,  618,  620,
+      616,  602,  609,  605,  607,  603,  598,  596,  596,  575,
+
+      542,  553,    0, 1013,  466, 1013,  582,    0,  588,  556,
+      555,  535,  527,  535,  516,  524,    0,  517,  510,  492,
+      493,  489,  472,    0,  473,  472,  451,  505,  428,  426,
+        0,    0,  423,    0,  387,  392,  390,  373,  334,  316,
+      298,  288,  286,    0,    0,    0,    0,    0,    0,  290,
+      296,  266,    0,    0,    0,    0,  257,  269,  241,    0,
+      250,    0,  202,  133,  105,    0, 1013,  605,  610,  615,
+      617,  619,  625,  632,  637,  642,  647
     } ;
 
-static yyconst flex_int16_t yy_def[542] =
+static yyconst flex_int16_t yy_def[678] =
     {   0,
-      524,    1,  524,    3,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  525,  524,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  526,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  527,  524,  528,   17,  524,  529,
-      524,  530,   18,  524,  524,  524,  524,  524,  525,  524,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  531,  524,  526,  532,
-      524,  528,  533,  524,  524,  529,  530,  524,  524,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  524,  524,  524,  524,  531,  524,  532,
-      534,  524,  524,  533,  524,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-
-      525,  525,  525,  524,  524,  524,  524,  524,  534,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  524,  524,  524,  524,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  524,  524,  524,
-      524,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  524,  535,  536,  524,  524,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  524,  537,  524,  524,  538,  536,  524,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      524,  539,  540,  538,  525,  525,  525,  525,  525,  525,
-      524,  524,  524,  524,  541,  540,  525,  525,  525,  525,
-
-      525,  525,  541,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,    0,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524
+      667,    1,  667,    3,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  668,  667,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  669,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  670,  667,  671,   17,  667,  667,
+      667,  672,   18,  667,  667,  667,  667,  667,  668,  667,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  667,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  673,  667,  669,  667,  667,  671,  667,  667,
+      667,  667,  672,  667,  667,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  667,  667,
+      667,  667,  673,  667,  667,  667,  667,  667,  667,  667,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  667,  667,  667,
+      667,  667,  667,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+
+      668,  668,  668,  668,  668,  667,  667,  667,  667,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  667,  667,  667,  667,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+
+      668,  668,  668,  668,  667,  674,  667,  667,  667,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  667,  667,  667,  667,  675,
+      667,  667,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  667,
+      676,  667,  675,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+
+      668,  668,  668,  667,  667,  667,  667,  677,  667,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  677,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,    0,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667
     } ;
 
-static yyconst flex_int16_t yy_nxt[875] =
+static yyconst flex_int16_t yy_nxt[1076] =
     {   0,
         6,    7,    8,    7,    9,    6,   10,   11,   12,   13,
        14,   15,   16,   17,   18,   18,   18,   18,   18,   18,
         6,   19,   20,   21,   22,   22,   22,   22,   22,   22,
-       22,   22,   22,   23,   24,   25,   26,   27,   28,   29,
-       30,   31,   32,   22,   33,   34,   35,   36,   37,   38,
-       39,   40,   41,   42,   43,   22,   22,   22,   44,   45,
-       55,   58,   55,   46,   61,  523,   63,   65,   65,   65,
-       65,   65,   65,   65,   74,   75,   59,   62,   64,  522,
-       47,   48,   49,   50,   49,   48,   48,   48,   48,   48,
-       48,   48,   48,   51,   48,   52,   52,   52,   52,   52,
-
-       52,   53,   48,   48,   48,   54,   54,   54,   54,   54,
-       54,   54,   54,   54,   48,   54,   54,   54,   54,   54,
+       22,   22,   22,   22,   23,   22,   24,   25,   26,   27,
+       28,   29,   30,   31,   32,   22,   22,   33,   34,   35,
+       36,   37,   38,   39,   40,   41,   42,   43,   22,   22,
+       22,   44,   45,   55,   58,   55,   46,   61,  112,   63,
+       65,   65,   65,   65,   65,   65,   65,   74,   75,   59,
+       62,   64,  113,   47,   48,   49,   50,   49,   48,   48,
+       48,   48,   48,   48,   48,   48,   51,   48,   52,   52,
+
+       52,   52,   52,   52,   53,   48,   48,   48,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   48,   54,
        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
-       54,   54,   54,   54,   54,   54,   54,   54,   54,   48,
-       67,  521,   68,   68,   68,   68,   68,   68,   69,   77,
-       78,   81,   82,   83,   90,   84,   70,   71,   91,   85,
-       86,   72,  109,   92,   87,  113,  178,   70,   71,   93,
-       88,  136,   94,   89,   95,  110,  111,  130,  114,  179,
-      112,  131,  520,   96,   72,   67,   97,   73,   73,   73,
-       73,   73,   73,   73,   98,  103,   99,  106,  519,  100,
-
-      116,   70,   71,  104,  107,  101,  138,  137,   55,  120,
-      139,  108,   70,   71,  105,  117,  121,  122,  118,  126,
-      123,  132,  127,  140,  141,  133,  124,  155,  155,  125,
-      128,  146,  524,  146,  134,  229,  229,  129,  148,  148,
-      148,  148,  148,  148,  148,   55,  193,   55,  518,  216,
-      150,  151,  153,  154,  194,  524,  209,  217,  140,  141,
-      142,  150,  151,  153,  154,  186,  143,  198,  187,  188,
-      144,  210,  189,  199,  190,  145,   67,  517,   69,   69,
-       69,   69,   69,   69,   69,  221,  138,  222,   55,  146,
-      139,  146,   70,   71,  293,  142,  140,  141,  233,  233,
-
-      516,  143,  294,   70,   71,  144,  515,  231,  232,  514,
-      145,  148,  148,  148,  148,  148,  148,  148,  231,  232,
-      156,  156,  156,  156,  156,  156,  156,  524,  524,  243,
-      244,  308,  308,  142,  270,  271,  272,  524,  524,  143,
-      298,  299,  300,  144,  465,  466,  235,  513,  145,  230,
-      230,  230,  230,  230,  230,  230,  151,  235,  234,  234,
-      234,  234,  234,  234,  234,  524,  524,  151,  312,  313,
-      314,  322,  323,  324,  329,  330,  331,  333,  334,  335,
-      341,  342,  343,  512,  154,  309,  309,  309,  309,  309,
-      309,  309,  524,  524,  511,  154,  388,  389,  390,  391,
-
-      392,  393,  394,  395,  396,  457,  458,  459,  465,  466,
-      510,  232,  419,  465,  466,  509,  460,  487,  488,  465,
-      466,  508,  232,  507,  443,  444,  444,  444,  444,  444,
-      444,  482,  465,  466,  492,  493,  492,  493,  506,  468,
-      465,  466,  492,  493,  467,  467,  467,  467,  467,  467,
-      492,  493,  492,  493,  492,  493,  505,  504,  502,  501,
-      500,  499,  468,  498,  497,  495,  494,  494,  494,  494,
-      494,  494,  491,  490,  489,  486,  485,  481,  480,  479,
-      478,  477,  476,  475,  474,  473,  472,  471,  495,   79,
-       79,   79,   79,   79,   79,  149,  149,  149,  149,  149,
-
-      149,   65,   65,  470,   65,  152,  152,  464,  152,  156,
-      156,  156,  157,  157,  157,  157,  228,  228,  463,  228,
-      228,  228,  228,  228,  228,  228,  230,  230,  230,  234,
-      234,  234,  309,  309,  309,  467,  467,  462,  467,  461,
-      456,  455,  454,  467,  469,  469,  453,  469,  469,  483,
-      483,  452,  483,  483,  484,  484,  484,  484,  494,  494,
-      451,  494,  450,  449,  448,  447,  494,  496,  496,  446,
-      496,  496,  503,  503,  503,  503,  445,  442,  441,  440,
-      439,  438,  437,  436,  435,  434,  433,  432,  431,  430,
-      429,  428,  427,  426,  425,  424,  423,  422,  421,  420,
-
-      419,  418,  417,  416,  415,  414,  413,  412,  411,  410,
-      409,  408,  407,  406,  405,  404,  403,  402,  401,  400,
-      399,  398,  397,  387,  386,  385,  384,  383,  382,  381,
-      380,  379,  378,  377,  376,  375,  374,  373,  372,  371,
-      370,  369,  368,  367,  366,  365,  364,  363,  362,  361,
-      360,  359,  358,  357,  356,  355,  354,  353,  352,  351,
-      350,  349,  348,  347,  346,  345,  344,  340,  339,  338,
-      337,  336,  332,  328,  327,  326,  325,  321,  320,  319,
-      318,  317,  316,  315,  311,  310,  307,  306,  305,  304,
-      303,  302,  301,  297,  296,  295,  292,  291,  290,  289,
-
-      288,  287,  286,  285,  284,  283,  282,  281,  280,  279,
-      278,  277,  276,  275,  274,  273,  269,  268,  267,  266,
-      265,  264,  263,  262,  261,  260,  259,  258,  257,  256,
-      255,  254,  253,  252,  251,  250,  249,  248,  247,  246,
-      245,  242,  241,  240,  239,  238,  237,  236,  227,  226,
-      225,  224,  223,  220,  219,  218,  215,  214,  213,  212,
-      211,  208,  207,  206,  205,  204,  203,  202,  201,  200,
-      197,  196,  195,  192,  191,  185,  184,  183,  182,  181,
-      180,  177,  176,  175,  174,  173,  172,  171,  170,  169,
-      168,  167,  166,  165,  164,  163,  162,  161,  160,  159,
-
-      158,  147,   76,  135,  119,  115,  102,   80,   76,   66,
-       60,   57,   56,  524,    5,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   48,   67,  142,   68,   68,
+       68,   68,   68,   68,   69,   77,   78,   81,   95,   84,
+       96,   85,  666,   70,   71,   86,   87,  116,   72,   97,
+       88,   98,   82,   83,   91,   70,   71,   89,   92,   99,
+       90,  117,  100,  665,   93,  101,  143,  104,  114,  119,
+       94,  102,  115,   72,   67,  105,   73,   73,   73,   73,
+
+       73,   73,   73,  175,  176,  120,  107,  106,  121,  108,
+      122,   70,   71,  109,  110,  152,  131,  152,  124,  132,
+      123,  111,  135,   70,   71,  125,  126,  136,  133,  138,
+      127,  137,   55,  139,   55,  134,  128,  129,  144,  130,
+       55,  664,  145,  140,  146,  147,  154,  154,  154,  154,
+      154,  154,  154,  156,  157,  159,  160,  667,  187,  236,
+      185,  152,  237,  152,  222,  156,  157,  159,  160,  161,
+      161,  186,  188,  162,  162,  162,  162,  162,  162,  162,
+      223,  204,  667,  148,  197,  209,  663,  198,  199,  205,
+      149,  200,  210,  201,  150,  212,  146,  147,  662,  151,
+
+       67,  231,   69,   69,   69,   69,   69,   69,   69,  213,
+      232,  144,  661,   55,  660,  145,  659,   70,   71,  146,
+      147,  154,  154,  154,  154,  154,  154,  154,  658,   70,
+       71,  246,  247,  260,  261,  148,  290,  291,  292,  317,
+      657,  519,  149,  246,  247,  656,  150,  655,  318,  520,
+      654,  151,  322,  323,  324,  337,  338,  339,  148,  348,
+      349,  350,  356,  357,  358,  149,  360,  361,  362,  150,
+      653,  244,  244,  652,  151,  245,  245,  245,  245,  245,
+      245,  245,  248,  248,  595,  596,  249,  249,  249,  249,
+      249,  249,  249,  162,  162,  162,  162,  162,  162,  162,
+
+      162,  162,  162,  162,  162,  162,  162,  245,  245,  245,
+      245,  245,  245,  245,  547,  548,  250,  245,  245,  245,
+      245,  245,  245,  245,  370,  371,  372,  651,  250,  650,
+      332,  332,  649,  157,  333,  333,  333,  333,  333,  333,
+      333,  430,  431,  432,  648,  157,  249,  249,  249,  249,
+      249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
+      333,  333,  333,  333,  333,  333,  333,  605,  606,  160,
+      333,  333,  333,  333,  333,  333,  333,  421,  422,  423,
+      647,  160,  433,  434,  435,  646,  247,  645,  424,  425,
+      436,  437,  438,  474,  475,  476,  547,  548,  247,  496,
+
+      497,  498,  465,  644,  477,  478,  605,  606,  643,  642,
+      499,  500,  641,  521,  506,  507,  507,  507,  507,  507,
+      507,  522,  533,  534,  535,  547,  548,  640,  550,  639,
+      638,  605,  606,  536,  537,  547,  548,  551,  551,  551,
+      551,  551,  551,  551,  547,  548,  637,  549,  549,  549,
+      549,  549,  549,  550,  547,  548,  581,  582,  582,  582,
+      582,  582,  582,  608,  605,  606,  551,  551,  551,  551,
+      551,  551,  551,  636,  635,  634,  609,  609,  609,  609,
+      609,  609,  609,  605,  606,  633,  632,  631,  608,  605,
+      606,  630,  629,  627,  626,  607,  607,  607,  607,  607,
+
+      607,  609,  609,  609,  609,  609,  609,  609,   79,   79,
+       79,   79,   79,  155,  155,  155,  155,  155,   65,   65,
+      158,  158,  163,  163,  163,  243,  243,  625,  243,  243,
+      243,  243,  243,  549,  549,  549,  624,  623,  622,  549,
+      583,  583,  583,  607,  607,  607,  621,  620,  619,  607,
+      628,  628,  628,  618,  617,  616,  615,  614,  613,  612,
+      611,  610,  604,  603,  602,  601,  600,  599,  598,  597,
+      594,  593,  592,  591,  590,  589,  588,  587,  586,  585,
+      584,  580,  579,  578,  577,  576,  575,  574,  573,  572,
+      571,  570,  569,  568,  567,  566,  565,  564,  563,  562,
+
+      561,  560,  559,  558,  557,  556,  555,  554,  553,  552,
+      546,  545,  544,  543,  542,  541,  540,  539,  538,  532,
+      531,  530,  529,  528,  527,  526,  525,  524,  523,  518,
+      517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
+      505,  504,  503,  502,  501,  495,  494,  493,  492,  491,
+      490,  489,  488,  487,  486,  485,  484,  483,  482,  481,
+      480,  479,  473,  472,  471,  470,  469,  468,  467,  466,
+      465,  464,  463,  462,  461,  460,  459,  458,  457,  456,
+      455,  454,  453,  452,  451,  450,  449,  448,  447,  446,
+      445,  444,  443,  442,  441,  440,  439,  429,  428,  427,
+
+      426,  420,  419,  418,  417,  416,  415,  414,  413,  412,
+      411,  410,  409,  408,  407,  406,  405,  404,  403,  402,
+      401,  400,  399,  398,  397,  396,  395,  394,  393,  392,
+      391,  390,  389,  388,  387,  386,  385,  384,  383,  382,
+      381,  380,  379,  378,  377,  376,  375,  374,  373,  369,
+      368,  367,  366,  365,  364,  363,  359,  355,  354,  353,
+      352,  351,  347,  346,  345,  344,  343,  342,  341,  340,
+      336,  335,  334,  331,  330,  329,  328,  327,  326,  325,
+      321,  320,  319,  316,  315,  314,  313,  312,  311,  310,
+      309,  308,  307,  306,  305,  304,  303,  302,  301,  300,
+
+      299,  298,  297,  296,  295,  294,  293,  289,  288,  287,
+      286,  285,  284,  283,  282,  281,  280,  279,  278,  277,
+      276,  275,  274,  273,  272,  271,  270,  269,  268,  267,
+      266,  265,  264,  263,  262,  259,  258,  257,  256,  255,
+      254,  253,  252,  251,  242,  241,  240,  239,  238,  235,
+      234,  233,  230,  229,  228,  227,  226,  225,  224,  221,
+      220,  219,  218,  217,  216,  215,  214,  211,  208,  207,
+      206,  203,  202,  196,  195,  194,  193,  192,  191,  190,
+      189,  184,  183,  182,  181,  180,  179,  178,  177,  174,
+      173,  172,  171,  170,  169,  168,  167,  166,  165,  164,
+
+      153,   76,  141,  118,  103,   80,   76,   66,   60,   57,
+       56,  667,    5,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667
     } ;
 
-static yyconst flex_int16_t yy_chk[875] =
+static yyconst flex_int16_t yy_chk[1076] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
-        7,   11,    7,    2,   13,  522,   14,   15,   15,   15,
-       15,   15,   15,   15,   19,   19,   11,   13,   14,  521,
-        2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    2,    7,   11,    7,    2,   13,   33,   14,
+       15,   15,   15,   15,   15,   15,   15,   19,   19,   11,
+       13,   14,   33,    2,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
 
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-       17,  520,   17,   17,   17,   17,   17,   17,   17,   21,
-       21,   24,   24,   25,   27,   25,   17,   17,   27,   25,
-       26,   17,   33,   27,   26,   35,   99,   17,   17,   27,
-       26,   44,   28,   26,   28,   33,   34,   41,   35,   99,
-       34,   41,  518,   28,   17,   18,   29,   18,   18,   18,
-       18,   18,   18,   18,   29,   31,   29,   32,  516,   29,
-
-       37,   18,   18,   31,   32,   29,   45,   44,   45,   39,
-       45,   32,   18,   18,   31,   37,   39,   39,   37,   40,
-       39,   42,   40,   46,   46,   42,   39,   70,   70,   39,
-       40,   49,   68,   49,   42,  150,  150,   40,   52,   52,
-       52,   52,   52,   52,   52,   55,  110,   55,  515,  130,
-       65,   65,   67,   67,  110,   68,  124,  130,  139,  139,
-       46,   65,   65,   67,   67,  107,   46,  114,  107,  107,
-       46,  124,  107,  114,  107,   46,   69,  514,   69,   69,
-       69,   69,   69,   69,   69,  134,  138,  134,  138,  146,
-      138,  146,   69,   69,  216,  139,  140,  140,  153,  153,
-
-      512,  139,  216,   69,   69,  139,  511,  152,  152,  510,
-      139,  148,  148,  148,  148,  148,  148,  148,  152,  152,
-      155,  155,  155,  155,  155,  155,  155,  156,  156,  168,
-      168,  231,  231,  140,  195,  195,  195,  230,  230,  140,
-      220,  220,  220,  140,  444,  444,  156,  508,  140,  229,
-      229,  229,  229,  229,  229,  229,  230,  156,  233,  233,
-      233,  233,  233,  233,  233,  234,  234,  230,  239,  239,
-      239,  248,  248,  248,  256,  256,  256,  260,  260,  260,
-      266,  266,  266,  507,  234,  308,  308,  308,  308,  308,
-      308,  308,  309,  309,  506,  234,  345,  345,  345,  346,
-
-      346,  346,  347,  347,  347,  435,  435,  435,  443,  443,
-      505,  309,  419,  469,  469,  504,  435,  478,  478,  465,
-      465,  501,  309,  500,  419,  419,  419,  419,  419,  419,
-      419,  465,  467,  467,  482,  482,  483,  483,  499,  443,
-      484,  484,  492,  492,  467,  467,  467,  467,  467,  467,
-      496,  496,  503,  503,  494,  494,  498,  497,  490,  489,
-      488,  487,  443,  486,  485,  482,  494,  494,  494,  494,
-      494,  494,  481,  480,  479,  477,  475,  464,  460,  459,
-      458,  457,  456,  455,  453,  452,  451,  447,  482,  525,
-      525,  525,  525,  525,  525,  526,  526,  526,  526,  526,
-
-      526,  527,  527,  446,  527,  528,  528,  442,  528,  529,
-      529,  529,  530,  530,  530,  530,  531,  531,  441,  531,
-      531,  531,  531,  531,  531,  531,  532,  532,  532,  533,
-      533,  533,  534,  534,  534,  535,  535,  439,  535,  436,
-      434,  433,  432,  535,  536,  536,  431,  536,  536,  537,
-      537,  429,  537,  537,  538,  538,  538,  538,  539,  539,
-      428,  539,  427,  424,  423,  422,  539,  540,  540,  421,
-      540,  540,  541,  541,  541,  541,  420,  418,  417,  416,
-      415,  414,  413,  412,  406,  403,  400,  399,  398,  397,
-      386,  385,  383,  381,  380,  379,  378,  377,  376,  375,
-
-      374,  373,  371,  370,  368,  366,  365,  364,  363,  362,
-      361,  360,  359,  357,  356,  355,  354,  353,  352,  351,
-      350,  349,  348,  344,  340,  339,  336,  325,  321,  320,
-      319,  318,  315,  310,  307,  306,  305,  304,  303,  302,
-      297,  296,  295,  294,  293,  292,  289,  288,  287,  286,
-      285,  284,  283,  282,  281,  280,  279,  278,  277,  276,
-      275,  274,  273,  272,  271,  270,  267,  265,  264,  263,
-      262,  261,  259,  255,  253,  252,  251,  247,  246,  245,
-      244,  243,  242,  241,  238,  236,  227,  226,  225,  224,
-      223,  222,  221,  219,  218,  217,  215,  214,  213,  212,
-
-      211,  210,  209,  208,  207,  206,  205,  204,  203,  202,
-      201,  200,  199,  198,  197,  196,  194,  193,  192,  191,
-      190,  189,  188,  187,  186,  185,  184,  183,  182,  181,
-      179,  178,  177,  176,  175,  174,  173,  172,  171,  170,
-      169,  167,  166,  165,  164,  163,  162,  161,  145,  144,
-      143,  142,  135,  133,  132,  131,  129,  128,  127,  126,
-      125,  123,  122,  121,  120,  119,  118,  117,  116,  115,
-      113,  112,  111,  109,  108,  105,  104,  103,  102,  101,
-      100,   98,   97,   96,   95,   94,   93,   92,   91,   90,
-       89,   88,   87,   86,   85,   84,   83,   82,   81,   78,
-
-       74,   51,   47,   43,   38,   36,   30,   23,   20,   16,
-       12,   10,    9,    5,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524
+        3,    3,    3,    3,    3,    3,   17,   44,   17,   17,
+       17,   17,   17,   17,   17,   21,   21,   24,   28,   25,
+       28,   25,  665,   17,   17,   25,   26,   35,   17,   28,
+       26,   29,   24,   24,   27,   17,   17,   26,   27,   29,
+       26,   35,   29,  664,   27,   29,   44,   31,   34,   37,
+       27,   29,   34,   17,   18,   31,   18,   18,   18,   18,
+
+       18,   18,   18,   90,   90,   37,   32,   31,   37,   32,
+       38,   18,   18,   32,   32,   49,   40,   49,   39,   40,
+       38,   32,   41,   18,   18,   39,   39,   41,   40,   42,
+       39,   41,   55,   42,   55,   40,   39,   39,   45,   39,
+       45,  663,   45,   42,   46,   46,   52,   52,   52,   52,
+       52,   52,   52,   65,   65,   67,   67,   68,  100,  140,
+       99,  152,  140,  152,  128,   65,   65,   67,   67,   70,
+       70,   99,  100,   70,   70,   70,   70,   70,   70,   70,
+      128,  113,   68,   46,  110,  117,  661,  110,  110,  113,
+       46,  110,  117,  110,   46,  119,  145,  145,  659,   46,
+
+       69,  136,   69,   69,   69,   69,   69,   69,   69,  119,
+      136,  144,  658,  144,  657,  144,  652,   69,   69,  146,
+      146,  154,  154,  154,  154,  154,  154,  154,  651,   69,
+       69,  158,  158,  176,  176,  145,  206,  206,  206,  231,
+      650,  479,  145,  158,  158,  643,  145,  642,  231,  479,
+      641,  145,  235,  235,  235,  255,  255,  255,  146,  265,
+      265,  265,  274,  274,  274,  146,  278,  278,  278,  146,
+      640,  156,  156,  639,  146,  156,  156,  156,  156,  156,
+      156,  156,  159,  159,  572,  572,  159,  159,  159,  159,
+      159,  159,  159,  161,  161,  161,  161,  161,  161,  161,
+
+      162,  162,  162,  162,  162,  162,  162,  244,  244,  244,
+      244,  244,  244,  244,  583,  583,  162,  245,  245,  245,
+      245,  245,  245,  245,  286,  286,  286,  638,  162,  637,
+      246,  246,  636,  245,  246,  246,  246,  246,  246,  246,
+      246,  374,  374,  374,  635,  245,  248,  248,  248,  248,
+      248,  248,  248,  249,  249,  249,  249,  249,  249,  249,
+      332,  332,  332,  332,  332,  332,  332,  605,  605,  249,
+      333,  333,  333,  333,  333,  333,  333,  364,  364,  364,
+      633,  249,  375,  375,  375,  630,  333,  629,  364,  364,
+      376,  376,  376,  420,  420,  420,  506,  506,  333,  459,
+
+      459,  459,  465,  627,  420,  420,  628,  628,  626,  625,
+      459,  459,  623,  480,  465,  465,  465,  465,  465,  465,
+      465,  480,  493,  493,  493,  507,  507,  622,  506,  621,
+      620,  581,  581,  493,  493,  549,  549,  507,  507,  507,
+      507,  507,  507,  507,  547,  547,  619,  549,  549,  549,
+      549,  549,  549,  506,  551,  551,  547,  547,  547,  547,
+      547,  547,  547,  581,  582,  582,  551,  551,  551,  551,
+      551,  551,  551,  618,  616,  615,  582,  582,  582,  582,
+      582,  582,  582,  607,  607,  614,  613,  612,  581,  609,
+      609,  611,  610,  602,  601,  607,  607,  607,  607,  607,
+
+      607,  609,  609,  609,  609,  609,  609,  609,  668,  668,
+      668,  668,  668,  669,  669,  669,  669,  669,  670,  670,
+      671,  671,  672,  672,  672,  673,  673,  600,  673,  673,
+      673,  673,  673,  674,  674,  674,  599,  598,  597,  674,
+      675,  675,  675,  676,  676,  676,  596,  595,  594,  676,
+      677,  677,  677,  593,  592,  591,  590,  589,  588,  586,
+      585,  584,  580,  579,  578,  577,  576,  575,  574,  573,
+      571,  567,  562,  561,  560,  559,  558,  557,  556,  555,
+      554,  546,  543,  542,  540,  539,  537,  536,  535,  534,
+      533,  532,  531,  530,  529,  527,  526,  525,  524,  523,
+
+      522,  521,  520,  519,  518,  517,  515,  514,  510,  509,
+      505,  504,  502,  500,  499,  498,  497,  496,  494,  492,
+      491,  490,  489,  488,  487,  485,  484,  483,  482,  478,
+      477,  476,  475,  474,  473,  470,  469,  468,  467,  466,
+      464,  463,  462,  461,  460,  458,  457,  450,  449,  446,
+      445,  442,  441,  440,  439,  428,  427,  425,  424,  423,
+      422,  421,  418,  416,  415,  414,  412,  411,  409,  408,
+      407,  406,  404,  403,  401,  399,  398,  397,  396,  395,
+      394,  393,  392,  391,  390,  388,  387,  386,  385,  384,
+      383,  382,  381,  380,  379,  378,  377,  373,  369,  368,
+
+      365,  363,  353,  351,  347,  346,  345,  344,  342,  340,
+      335,  334,  331,  330,  329,  328,  327,  326,  321,  320,
+      319,  318,  317,  316,  315,  312,  311,  310,  309,  308,
+      307,  306,  305,  304,  303,  302,  301,  300,  299,  298,
+      297,  296,  295,  294,  293,  292,  291,  290,  287,  285,
+      284,  283,  282,  281,  280,  279,  277,  273,  271,  270,
+      269,  268,  264,  263,  262,  261,  260,  259,  258,  257,
+      254,  252,  251,  242,  241,  240,  239,  238,  237,  236,
+      234,  233,  232,  230,  229,  228,  227,  226,  225,  224,
+      223,  222,  221,  220,  219,  218,  217,  216,  215,  214,
+
+      213,  212,  211,  210,  209,  208,  207,  205,  204,  203,
+      202,  201,  200,  199,  198,  197,  196,  195,  194,  193,
+      192,  191,  190,  188,  187,  186,  185,  184,  183,  182,
+      181,  180,  179,  178,  177,  175,  174,  173,  172,  171,
+      170,  169,  168,  166,  151,  150,  149,  148,  141,  139,
+      138,  137,  135,  134,  133,  132,  131,  130,  129,  127,
+      126,  125,  124,  123,  122,  121,  120,  118,  116,  115,
+      114,  112,  111,  109,  108,  106,  105,  104,  103,  102,
+      101,   98,   97,   96,   95,   94,   93,   92,   91,   89,
+       88,   87,   86,   85,   84,   83,   82,   81,   78,   74,
+
+       51,   47,   43,   36,   30,   23,   20,   16,   12,   10,
+        9,    5,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  667
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -856,7 +935,7 @@ static yyconst flex_int16_t yy_chk[875] =
    } while (0)
 
 
-#line 860 "glsl_lexer.cpp"
+#line 939 "glsl_lexer.cpp"
 
 #define INITIAL 0
 #define PP 1
@@ -990,12 +1069,7 @@ static int input (yyscan_t yyscanner );
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
 #define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -1003,7 +1077,7 @@ static int input (yyscan_t yyscanner );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#define ECHO fwrite( yytext, yyleng, 1, yyout )
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -1014,7 +1088,7 @@ static int input (yyscan_t yyscanner );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               size_t n; \
+               int n; \
                for ( n = 0; n < max_size && \
                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
@@ -1105,7 +1179,7 @@ YY_DECL
 #line 66 "glsl_lexer.lpp"
 
 
-#line 1109 "glsl_lexer.cpp"
+#line 1183 "glsl_lexer.cpp"
 
     yylval = yylval_param;
 
@@ -1163,13 +1237,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 525 )
+                               if ( yy_current_state >= 668 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 524 );
+               while ( yy_current_state != 667 );
                yy_cp = yyg->yy_last_accepting_cpos;
                yy_current_state = yyg->yy_last_accepting_state;
 
@@ -1994,9 +2068,160 @@ YY_RULE_SETUP
 #line 303 "glsl_lexer.lpp"
 TOKEN_OR_IDENTIFIER(120, PRECISION);
        YY_BREAK
+/* Additional reserved words in GLSL 1.30. */
 case 145:
 YY_RULE_SETUP
-#line 305 "glsl_lexer.lpp"
+#line 306 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, COMMON);
+       YY_BREAK
+case 146:
+YY_RULE_SETUP
+#line 307 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, PARTITION);
+       YY_BREAK
+case 147:
+YY_RULE_SETUP
+#line 308 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, ACTIVE);
+       YY_BREAK
+case 148:
+YY_RULE_SETUP
+#line 309 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, SUPERP);
+       YY_BREAK
+case 149:
+YY_RULE_SETUP
+#line 310 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, SAMPLERBUFFER);
+       YY_BREAK
+case 150:
+YY_RULE_SETUP
+#line 311 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, FILTER);
+       YY_BREAK
+case 151:
+YY_RULE_SETUP
+#line 312 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IMAGE1D);
+       YY_BREAK
+case 152:
+YY_RULE_SETUP
+#line 313 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IMAGE2D);
+       YY_BREAK
+case 153:
+YY_RULE_SETUP
+#line 314 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IMAGE3D);
+       YY_BREAK
+case 154:
+YY_RULE_SETUP
+#line 315 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IMAGECUBE);
+       YY_BREAK
+case 155:
+YY_RULE_SETUP
+#line 316 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IIMAGE1D);
+       YY_BREAK
+case 156:
+YY_RULE_SETUP
+#line 317 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IIMAGE2D);
+       YY_BREAK
+case 157:
+YY_RULE_SETUP
+#line 318 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IIMAGE3D);
+       YY_BREAK
+case 158:
+YY_RULE_SETUP
+#line 319 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IIMAGECUBE);
+       YY_BREAK
+case 159:
+YY_RULE_SETUP
+#line 320 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, UIMAGE1D);
+       YY_BREAK
+case 160:
+YY_RULE_SETUP
+#line 321 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, UIMAGE2D);
+       YY_BREAK
+case 161:
+YY_RULE_SETUP
+#line 322 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, UIMAGE3D);
+       YY_BREAK
+case 162:
+YY_RULE_SETUP
+#line 323 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, UIMAGECUBE);
+       YY_BREAK
+case 163:
+YY_RULE_SETUP
+#line 324 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IMAGE1DARRAY);
+       YY_BREAK
+case 164:
+YY_RULE_SETUP
+#line 325 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IMAGE2DARRAY);
+       YY_BREAK
+case 165:
+YY_RULE_SETUP
+#line 326 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IIMAGE1DARRAY);
+       YY_BREAK
+case 166:
+YY_RULE_SETUP
+#line 327 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IIMAGE2DARRAY);
+       YY_BREAK
+case 167:
+YY_RULE_SETUP
+#line 328 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, UIMAGE1DARRAY);
+       YY_BREAK
+case 168:
+YY_RULE_SETUP
+#line 329 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, UIMAGE2DARRAY);
+       YY_BREAK
+case 169:
+YY_RULE_SETUP
+#line 330 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IMAGE1DSHADOW);
+       YY_BREAK
+case 170:
+YY_RULE_SETUP
+#line 331 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IMAGE2DSHADOW);
+       YY_BREAK
+case 171:
+YY_RULE_SETUP
+#line 332 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IMAGEBUFFER);
+       YY_BREAK
+case 172:
+YY_RULE_SETUP
+#line 333 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, IIMAGEBUFFER);
+       YY_BREAK
+case 173:
+YY_RULE_SETUP
+#line 334 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, UIMAGEBUFFER);
+       YY_BREAK
+case 174:
+YY_RULE_SETUP
+#line 335 "glsl_lexer.lpp"
+TOKEN_OR_IDENTIFIER(130, ROW_MAJOR);
+       YY_BREAK
+case 175:
+YY_RULE_SETUP
+#line 337 "glsl_lexer.lpp"
 {
                            struct _mesa_glsl_parse_state *state = yyextra;
                            void *ctx = state;  
@@ -2004,17 +2229,17 @@ YY_RULE_SETUP
                            return IDENTIFIER;
                        }
        YY_BREAK
-case 146:
+case 176:
 YY_RULE_SETUP
-#line 312 "glsl_lexer.lpp"
+#line 344 "glsl_lexer.lpp"
 { return yytext[0]; }
        YY_BREAK
-case 147:
+case 177:
 YY_RULE_SETUP
-#line 314 "glsl_lexer.lpp"
+#line 346 "glsl_lexer.lpp"
 ECHO;
        YY_BREAK
-#line 2018 "glsl_lexer.cpp"
+#line 2243 "glsl_lexer.cpp"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(PP):
        yyterminate();
@@ -2311,7 +2536,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 525 )
+                       if ( yy_current_state >= 668 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2340,11 +2565,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 525 )
+               if ( yy_current_state >= 668 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 524);
+       yy_is_jam = (yy_current_state == 667);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2749,8 +2974,8 @@ YY_BUFFER_STATE _mesa_glsl__scan_string (yyconst char * yystr , yyscan_t yyscann
 
 /** Setup the input buffer state to scan the given bytes. The next call to _mesa_glsl_lex() will
  * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  */
@@ -3156,7 +3381,7 @@ void _mesa_glsl_free (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 314 "glsl_lexer.lpp"
+#line 346 "glsl_lexer.lpp"
 
 
 
index 9fd9b53c5c62b0847e5519ca46d438b97be5769b..b78df5d84ff589162610d416e26fa6b21605fd33 100644 (file)
@@ -302,6 +302,38 @@ mediump            TOKEN_OR_IDENTIFIER(120, MEDIUMP);
 highp          TOKEN_OR_IDENTIFIER(120, HIGHP);
 precision      TOKEN_OR_IDENTIFIER(120, PRECISION);
 
+    /* Additional reserved words in GLSL 1.30. */
+common         TOKEN_OR_IDENTIFIER(130, COMMON);
+partition      TOKEN_OR_IDENTIFIER(130, PARTITION);
+active         TOKEN_OR_IDENTIFIER(130, ACTIVE);
+superp         TOKEN_OR_IDENTIFIER(130, SUPERP);
+samplerBuffer  TOKEN_OR_IDENTIFIER(130, SAMPLERBUFFER);
+filter         TOKEN_OR_IDENTIFIER(130, FILTER);
+image1D                TOKEN_OR_IDENTIFIER(130, IMAGE1D);
+image2D                TOKEN_OR_IDENTIFIER(130, IMAGE2D);
+image3D                TOKEN_OR_IDENTIFIER(130, IMAGE3D);
+imageCube      TOKEN_OR_IDENTIFIER(130, IMAGECUBE);
+iimage1D       TOKEN_OR_IDENTIFIER(130, IIMAGE1D);
+iimage2D       TOKEN_OR_IDENTIFIER(130, IIMAGE2D);
+iimage3D       TOKEN_OR_IDENTIFIER(130, IIMAGE3D);
+iimageCube     TOKEN_OR_IDENTIFIER(130, IIMAGECUBE);
+uimage1D       TOKEN_OR_IDENTIFIER(130, UIMAGE1D);
+uimage2D       TOKEN_OR_IDENTIFIER(130, UIMAGE2D);
+uimage3D       TOKEN_OR_IDENTIFIER(130, UIMAGE3D);
+uimageCube     TOKEN_OR_IDENTIFIER(130, UIMAGECUBE);
+image1DArray   TOKEN_OR_IDENTIFIER(130, IMAGE1DARRAY);
+image2DArray   TOKEN_OR_IDENTIFIER(130, IMAGE2DARRAY);
+iimage1DArray  TOKEN_OR_IDENTIFIER(130, IIMAGE1DARRAY);
+iimage2DArray  TOKEN_OR_IDENTIFIER(130, IIMAGE2DARRAY);
+uimage1DArray  TOKEN_OR_IDENTIFIER(130, UIMAGE1DARRAY);
+uimage2DArray  TOKEN_OR_IDENTIFIER(130, UIMAGE2DARRAY);
+image1DShadow  TOKEN_OR_IDENTIFIER(130, IMAGE1DSHADOW);
+image2DShadow  TOKEN_OR_IDENTIFIER(130, IMAGE2DSHADOW);
+imageBuffer    TOKEN_OR_IDENTIFIER(130, IMAGEBUFFER);
+iimageBuffer   TOKEN_OR_IDENTIFIER(130, IIMAGEBUFFER);
+uimageBuffer   TOKEN_OR_IDENTIFIER(130, UIMAGEBUFFER);
+row_major      TOKEN_OR_IDENTIFIER(130, ROW_MAJOR);
+
 [_a-zA-Z][_a-zA-Z0-9]* {
                            struct _mesa_glsl_parse_state *state = yyextra;
                            void *ctx = state;  
index bf83b81603ffebb0f714a9201e8eef64122722c9..4b5e3614df6c267b1012110d3a0949d1d84fb652 100644 (file)
@@ -1,10 +1,9 @@
-
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* A Bison parser, made by GNU Bison 2.4.2.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software
+   Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -46,7 +45,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "2.4.2"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
 
 
 /* Line 189 of yacc.c  */
-#line 118 "glsl_parser.cpp"
+#line 117 "glsl_parser.cpp"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
      LOWP = 362,
      MEDIUMP = 363,
      HIGHP = 364,
-     PRECISION = 365,
-     VERSION = 366,
-     EXTENSION = 367,
-     LINE = 368,
-     PRAGMA = 369,
-     COLON = 370,
-     EOL = 371,
-     INTERFACE = 372,
-     OUTPUT = 373,
-     LAYOUT_TOK = 374,
-     ASM = 375,
-     CLASS = 376,
-     UNION = 377,
-     ENUM = 378,
-     TYPEDEF = 379,
-     TEMPLATE = 380,
-     THIS = 381,
-     PACKED = 382,
-     GOTO = 383,
-     INLINE_TOK = 384,
-     NOINLINE = 385,
-     VOLATILE = 386,
-     PUBLIC_TOK = 387,
-     STATIC = 388,
-     EXTERN = 389,
-     EXTERNAL = 390,
-     LONG = 391,
-     SHORT = 392,
-     DOUBLE = 393,
-     HALF = 394,
-     FIXED = 395,
-     UNSIGNED = 396,
-     INPUT = 397,
-     OUPTUT = 398,
-     HVEC2 = 399,
-     HVEC3 = 400,
-     HVEC4 = 401,
-     DVEC2 = 402,
-     DVEC3 = 403,
-     DVEC4 = 404,
-     FVEC2 = 405,
-     FVEC3 = 406,
-     FVEC4 = 407,
-     SAMPLER2DRECT = 408,
-     SAMPLER3DRECT = 409,
-     SAMPLER2DRECTSHADOW = 410,
-     SIZEOF = 411,
-     CAST = 412,
-     NAMESPACE = 413,
-     USING = 414
+     SUPERP = 365,
+     PRECISION = 366,
+     VERSION = 367,
+     EXTENSION = 368,
+     LINE = 369,
+     PRAGMA = 370,
+     COLON = 371,
+     EOL = 372,
+     INTERFACE = 373,
+     OUTPUT = 374,
+     LAYOUT_TOK = 375,
+     ASM = 376,
+     CLASS = 377,
+     UNION = 378,
+     ENUM = 379,
+     TYPEDEF = 380,
+     TEMPLATE = 381,
+     THIS = 382,
+     PACKED = 383,
+     GOTO = 384,
+     INLINE_TOK = 385,
+     NOINLINE = 386,
+     VOLATILE = 387,
+     PUBLIC_TOK = 388,
+     STATIC = 389,
+     EXTERN = 390,
+     EXTERNAL = 391,
+     LONG = 392,
+     SHORT = 393,
+     DOUBLE = 394,
+     HALF = 395,
+     FIXED = 396,
+     UNSIGNED = 397,
+     INPUT = 398,
+     OUPTUT = 399,
+     HVEC2 = 400,
+     HVEC3 = 401,
+     HVEC4 = 402,
+     DVEC2 = 403,
+     DVEC3 = 404,
+     DVEC4 = 405,
+     FVEC2 = 406,
+     FVEC3 = 407,
+     FVEC4 = 408,
+     SAMPLER2DRECT = 409,
+     SAMPLER3DRECT = 410,
+     SAMPLER2DRECTSHADOW = 411,
+     SIZEOF = 412,
+     CAST = 413,
+     NAMESPACE = 414,
+     USING = 415,
+     COMMON = 416,
+     PARTITION = 417,
+     ACTIVE = 418,
+     SAMPLERBUFFER = 419,
+     FILTER = 420,
+     IMAGE1D = 421,
+     IMAGE2D = 422,
+     IMAGE3D = 423,
+     IMAGECUBE = 424,
+     IMAGE1DARRAY = 425,
+     IMAGE2DARRAY = 426,
+     IIMAGE1D = 427,
+     IIMAGE2D = 428,
+     IIMAGE3D = 429,
+     IIMAGECUBE = 430,
+     IIMAGE1DARRAY = 431,
+     IIMAGE2DARRAY = 432,
+     UIMAGE1D = 433,
+     UIMAGE2D = 434,
+     UIMAGE3D = 435,
+     UIMAGECUBE = 436,
+     UIMAGE1DARRAY = 437,
+     UIMAGE2DARRAY = 438,
+     IMAGE1DSHADOW = 439,
+     IMAGE2DSHADOW = 440,
+     IMAGEBUFFER = 441,
+     IIMAGEBUFFER = 442,
+     UIMAGEBUFFER = 443,
+     ROW_MAJOR = 444
    };
 #endif
 
@@ -339,7 +368,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 343 "glsl_parser.cpp"
+#line 372 "glsl_parser.cpp"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -364,7 +393,7 @@ typedef struct YYLTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 368 "glsl_parser.cpp"
+#line 397 "glsl_parser.cpp"
 
 #ifdef short
 # undef short
@@ -414,7 +443,7 @@ typedef short int yytype_int16;
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -581,10 +610,10 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  5
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3839
+#define YYLAST   4373
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  184
+#define YYNTOKENS  214
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  89
 /* YYNRULES -- Number of rules.  */
@@ -594,7 +623,7 @@ union yyalloc
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   414
+#define YYMAXUTOK   444
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -605,16 +634,16 @@ static const yytype_uint8 yytranslate[] =
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   168,     2,     2,     2,   172,   175,     2,
-     160,   161,   170,   166,   165,   167,   164,   171,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   179,   181,
-     173,   180,   174,   178,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   198,     2,     2,     2,   202,   205,     2,
+     190,   191,   200,   196,   195,   197,   194,   201,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   209,   211,
+     203,   210,   204,   208,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   162,     2,   163,   176,     2,     2,     2,     2,     2,
+       2,   192,     2,   193,   206,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   182,   177,   183,   169,     2,     2,     2,
+       2,     2,     2,   212,   207,   213,   199,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -643,7 +672,10 @@ static const yytype_uint8 yytranslate[] =
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189
 };
 
 #if YYDEBUG
@@ -684,119 +716,119 @@ static const yytype_uint16 yyprhs[] =
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     185,     0,    -1,    -1,   187,   188,   186,   190,    -1,    -1,
-     111,    81,   116,    -1,    -1,   188,   189,    -1,   112,    79,
-     115,    79,   116,    -1,   271,    -1,   190,   271,    -1,    79,
-      -1,   191,    -1,    81,    -1,    82,    -1,    80,    -1,    83,
-      -1,   160,   218,   161,    -1,   192,    -1,   193,   162,   194,
-     163,    -1,   195,    -1,   193,   164,    79,    -1,   193,    87,
-      -1,   193,    88,    -1,   218,    -1,   196,    -1,   197,    -1,
-     193,   164,   197,    -1,   199,   161,    -1,   198,   161,    -1,
-     200,    77,    -1,   200,    -1,   200,   216,    -1,   199,   165,
-     216,    -1,   201,   160,    -1,   240,    -1,    79,    -1,    84,
-      -1,   193,    -1,    87,   202,    -1,    88,   202,    -1,   203,
-     202,    -1,   166,    -1,   167,    -1,   168,    -1,   169,    -1,
-     202,    -1,   204,   170,   202,    -1,   204,   171,   202,    -1,
-     204,   172,   202,    -1,   204,    -1,   205,   166,   204,    -1,
-     205,   167,   204,    -1,   205,    -1,   206,    85,   205,    -1,
-     206,    86,   205,    -1,   206,    -1,   207,   173,   206,    -1,
-     207,   174,   206,    -1,   207,    89,   206,    -1,   207,    90,
-     206,    -1,   207,    -1,   208,    91,   207,    -1,   208,    92,
-     207,    -1,   208,    -1,   209,   175,   208,    -1,   209,    -1,
-     210,   176,   209,    -1,   210,    -1,   211,   177,   210,    -1,
-     211,    -1,   212,    93,   211,    -1,   212,    -1,   213,    95,
-     212,    -1,   213,    -1,   214,    94,   213,    -1,   214,    -1,
-     214,   178,   218,   179,   216,    -1,   215,    -1,   202,   217,
-     216,    -1,   180,    -1,    96,    -1,    97,    -1,    99,    -1,
+     215,     0,    -1,    -1,   217,   218,   216,   220,    -1,    -1,
+     112,    81,   117,    -1,    -1,   218,   219,    -1,   113,    79,
+     116,    79,   117,    -1,   301,    -1,   220,   301,    -1,    79,
+      -1,   221,    -1,    81,    -1,    82,    -1,    80,    -1,    83,
+      -1,   190,   248,   191,    -1,   222,    -1,   223,   192,   224,
+     193,    -1,   225,    -1,   223,   194,    79,    -1,   223,    87,
+      -1,   223,    88,    -1,   248,    -1,   226,    -1,   227,    -1,
+     223,   194,   227,    -1,   229,   191,    -1,   228,   191,    -1,
+     230,    77,    -1,   230,    -1,   230,   246,    -1,   229,   195,
+     246,    -1,   231,   190,    -1,   270,    -1,    79,    -1,    84,
+      -1,   223,    -1,    87,   232,    -1,    88,   232,    -1,   233,
+     232,    -1,   196,    -1,   197,    -1,   198,    -1,   199,    -1,
+     232,    -1,   234,   200,   232,    -1,   234,   201,   232,    -1,
+     234,   202,   232,    -1,   234,    -1,   235,   196,   234,    -1,
+     235,   197,   234,    -1,   235,    -1,   236,    85,   235,    -1,
+     236,    86,   235,    -1,   236,    -1,   237,   203,   236,    -1,
+     237,   204,   236,    -1,   237,    89,   236,    -1,   237,    90,
+     236,    -1,   237,    -1,   238,    91,   237,    -1,   238,    92,
+     237,    -1,   238,    -1,   239,   205,   238,    -1,   239,    -1,
+     240,   206,   239,    -1,   240,    -1,   241,   207,   240,    -1,
+     241,    -1,   242,    93,   241,    -1,   242,    -1,   243,    95,
+     242,    -1,   243,    -1,   244,    94,   243,    -1,   244,    -1,
+     244,   208,   248,   209,   246,    -1,   245,    -1,   232,   247,
+     246,    -1,   210,    -1,    96,    -1,    97,    -1,    99,    -1,
       98,    -1,   105,    -1,   100,    -1,   101,    -1,   102,    -1,
-     103,    -1,   104,    -1,   216,    -1,   218,   165,   216,    -1,
-     215,    -1,   221,   181,    -1,   229,   181,    -1,   110,   244,
-     241,   181,    -1,   222,   161,    -1,   224,    -1,   223,    -1,
-     224,   226,    -1,   223,   165,   226,    -1,   231,    79,   160,
-      -1,   240,    79,    -1,   240,    79,   162,   219,   163,    -1,
-     237,   227,   225,    -1,   227,   225,    -1,   237,   227,   228,
-      -1,   227,   228,    -1,    -1,    36,    -1,    37,    -1,    38,
-      -1,   240,    -1,   230,    -1,   229,   165,    79,    -1,   229,
-     165,    79,   162,   163,    -1,   229,   165,    79,   162,   219,
-     163,    -1,   229,   165,    79,   162,   163,   180,   250,    -1,
-     229,   165,    79,   162,   219,   163,   180,   250,    -1,   229,
-     165,    79,   180,   250,    -1,   231,    -1,   231,    79,    -1,
-     231,    79,   162,   163,    -1,   231,    79,   162,   219,   163,
-      -1,   231,    79,   162,   163,   180,   250,    -1,   231,    79,
-     162,   219,   163,   180,   250,    -1,   231,    79,   180,   250,
-      -1,   106,    79,    -1,   240,    -1,   238,   240,    -1,    -1,
-     233,    -1,   119,   160,   234,   161,    -1,   235,    -1,   234,
-     165,   235,    -1,    79,    -1,    43,    -1,    42,    -1,    41,
-      -1,     4,    -1,   239,    -1,   236,   238,    -1,   106,   238,
-      -1,     4,    -1,     3,    -1,   232,    40,    -1,    35,    40,
-      -1,   232,    36,    -1,    37,    -1,    35,    36,    -1,    35,
-      37,    -1,    39,    -1,   241,    -1,   244,   241,    -1,   242,
-      -1,   242,   162,   163,    -1,   242,   162,   219,   163,    -1,
-     243,    -1,   245,    -1,    79,    -1,    77,    -1,     6,    -1,
+     103,    -1,   104,    -1,   246,    -1,   248,   195,   246,    -1,
+     245,    -1,   251,   211,    -1,   259,   211,    -1,   111,   274,
+     271,   211,    -1,   252,   191,    -1,   254,    -1,   253,    -1,
+     254,   256,    -1,   253,   195,   256,    -1,   261,    79,   190,
+      -1,   270,    79,    -1,   270,    79,   192,   249,   193,    -1,
+     267,   257,   255,    -1,   257,   255,    -1,   267,   257,   258,
+      -1,   257,   258,    -1,    -1,    36,    -1,    37,    -1,    38,
+      -1,   270,    -1,   260,    -1,   259,   195,    79,    -1,   259,
+     195,    79,   192,   193,    -1,   259,   195,    79,   192,   249,
+     193,    -1,   259,   195,    79,   192,   193,   210,   280,    -1,
+     259,   195,    79,   192,   249,   193,   210,   280,    -1,   259,
+     195,    79,   210,   280,    -1,   261,    -1,   261,    79,    -1,
+     261,    79,   192,   193,    -1,   261,    79,   192,   249,   193,
+      -1,   261,    79,   192,   193,   210,   280,    -1,   261,    79,
+     192,   249,   193,   210,   280,    -1,   261,    79,   210,   280,
+      -1,   106,    79,    -1,   270,    -1,   268,   270,    -1,    -1,
+     263,    -1,   120,   190,   264,   191,    -1,   265,    -1,   264,
+     195,   265,    -1,    79,    -1,    43,    -1,    42,    -1,    41,
+      -1,     4,    -1,   269,    -1,   266,   268,    -1,   106,   268,
+      -1,     4,    -1,     3,    -1,   262,    40,    -1,    35,    40,
+      -1,   262,    36,    -1,    37,    -1,    35,    36,    -1,    35,
+      37,    -1,    39,    -1,   271,    -1,   274,   271,    -1,   272,
+      -1,   272,   192,   193,    -1,   272,   192,   249,   193,    -1,
+     273,    -1,   275,    -1,    79,    -1,    77,    -1,     6,    -1,
        7,    -1,     8,    -1,     5,    -1,    29,    -1,    30,    -1,
       31,    -1,    20,    -1,    21,    -1,    22,    -1,    23,    -1,
       24,    -1,    25,    -1,    26,    -1,    27,    -1,    28,    -1,
       32,    -1,    33,    -1,    34,    -1,    44,    -1,    45,    -1,
       46,    -1,    47,    -1,    48,    -1,    49,    -1,    50,    -1,
-      51,    -1,    52,    -1,    53,    -1,    54,    -1,   153,    -1,
-      55,    -1,    56,    -1,    57,    -1,    58,    -1,   155,    -1,
+      51,    -1,    52,    -1,    53,    -1,    54,    -1,   154,    -1,
+      55,    -1,    56,    -1,    57,    -1,    58,    -1,   156,    -1,
       59,    -1,    60,    -1,    61,    -1,    62,    -1,    63,    -1,
       64,    -1,    65,    -1,    66,    -1,    67,    -1,    68,    -1,
       69,    -1,    70,    -1,    71,    -1,    72,    -1,    73,    -1,
       74,    -1,    75,    -1,   109,    -1,   108,    -1,   107,    -1,
-      76,    79,   182,   246,   183,    -1,    76,   182,   246,   183,
-      -1,   247,    -1,   246,   247,    -1,   240,   248,   181,    -1,
-     249,    -1,   248,   165,   249,    -1,    79,    -1,    79,   162,
-     219,   163,    -1,   216,    -1,   220,    -1,   253,    -1,   254,
-      -1,   256,    -1,   255,    -1,   262,    -1,   251,    -1,   260,
-      -1,   261,    -1,   264,    -1,   265,    -1,   266,    -1,   270,
-      -1,   182,   183,    -1,   182,   259,   183,    -1,   258,    -1,
-     255,    -1,   182,   183,    -1,   182,   259,   183,    -1,   252,
-      -1,   259,   252,    -1,   181,    -1,   218,   181,    -1,    14,
-     160,   218,   161,   253,    12,   253,    -1,    14,   160,   218,
-     161,   253,    -1,    14,   160,   218,   161,   254,    -1,    14,
-     160,   218,   161,   253,    12,   254,    -1,   218,    -1,   231,
-      79,   180,   250,    -1,    17,   160,   218,   161,   256,    -1,
-      18,   218,   179,    -1,    19,   179,    -1,    78,   160,   263,
-     161,   257,    -1,    11,   252,    78,   160,   218,   161,   181,
-      -1,    13,   160,   267,   269,   161,   257,    -1,   260,    -1,
-     251,    -1,   263,    -1,    -1,   268,   181,    -1,   268,   181,
-     218,    -1,    10,   181,    -1,     9,   181,    -1,    16,   181,
-      -1,    16,   218,   181,    -1,    15,   181,    -1,   272,    -1,
-     220,    -1,   221,   258,    -1
+      76,    79,   212,   276,   213,    -1,    76,   212,   276,   213,
+      -1,   277,    -1,   276,   277,    -1,   270,   278,   211,    -1,
+     279,    -1,   278,   195,   279,    -1,    79,    -1,    79,   192,
+     249,   193,    -1,   246,    -1,   250,    -1,   283,    -1,   284,
+      -1,   286,    -1,   285,    -1,   292,    -1,   281,    -1,   290,
+      -1,   291,    -1,   294,    -1,   295,    -1,   296,    -1,   300,
+      -1,   212,   213,    -1,   212,   289,   213,    -1,   288,    -1,
+     285,    -1,   212,   213,    -1,   212,   289,   213,    -1,   282,
+      -1,   289,   282,    -1,   211,    -1,   248,   211,    -1,    14,
+     190,   248,   191,   283,    12,   283,    -1,    14,   190,   248,
+     191,   283,    -1,    14,   190,   248,   191,   284,    -1,    14,
+     190,   248,   191,   283,    12,   284,    -1,   248,    -1,   261,
+      79,   210,   280,    -1,    17,   190,   248,   191,   286,    -1,
+      18,   248,   209,    -1,    19,   209,    -1,    78,   190,   293,
+     191,   287,    -1,    11,   282,    78,   190,   248,   191,   211,
+      -1,    13,   190,   297,   299,   191,   287,    -1,   290,    -1,
+     281,    -1,   293,    -1,    -1,   298,   211,    -1,   298,   211,
+     248,    -1,    10,   211,    -1,     9,   211,    -1,    16,   211,
+      -1,    16,   248,   211,    -1,    15,   211,    -1,   302,    -1,
+     250,    -1,   251,   288,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   193,   193,   192,   201,   204,   221,   223,   227,   236,
-     244,   255,   259,   266,   273,   280,   287,   294,   301,   302,
-     308,   312,   319,   325,   334,   338,   342,   343,   352,   353,
-     357,   358,   362,   368,   380,   384,   390,   397,   408,   409,
-     415,   421,   431,   432,   433,   434,   438,   439,   445,   451,
-     460,   461,   467,   476,   477,   483,   492,   493,   499,   505,
-     511,   520,   521,   527,   536,   537,   546,   547,   556,   557,
-     566,   567,   576,   577,   586,   587,   596,   597,   606,   607,
-     616,   617,   618,   619,   620,   621,   622,   623,   624,   625,
-     626,   630,   634,   650,   654,   658,   662,   676,   680,   681,
-     685,   690,   698,   709,   719,   734,   741,   746,   757,   769,
-     770,   771,   772,   776,   780,   781,   790,   799,   808,   817,
-     826,   839,   850,   859,   868,   877,   886,   895,   904,   918,
-     925,   936,   937,   941,   948,   949,   956,   990,   991,   992,
-     996,  1000,  1001,  1005,  1013,  1014,  1015,  1016,  1017,  1018,
-    1019,  1020,  1021,  1025,  1026,  1034,  1035,  1041,  1050,  1056,
-    1062,  1071,  1072,  1073,  1074,  1075,  1076,  1077,  1078,  1079,
-    1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,
-    1090,  1091,  1092,  1093,  1094,  1095,  1096,  1097,  1098,  1099,
-    1100,  1101,  1102,  1103,  1104,  1105,  1106,  1107,  1108,  1109,
-    1110,  1111,  1112,  1113,  1114,  1115,  1116,  1117,  1118,  1119,
-    1120,  1121,  1122,  1123,  1124,  1128,  1139,  1150,  1164,  1170,
-    1179,  1184,  1192,  1207,  1212,  1220,  1226,  1235,  1239,  1245,
-    1246,  1250,  1251,  1255,  1259,  1260,  1261,  1262,  1263,  1264,
-    1265,  1269,  1275,  1284,  1285,  1289,  1295,  1304,  1314,  1326,
-    1332,  1341,  1350,  1356,  1362,  1371,  1375,  1389,  1393,  1394,
-    1398,  1405,  1412,  1422,  1423,  1427,  1429,  1435,  1440,  1449,
-    1455,  1461,  1467,  1473,  1482,  1483,  1487
+       0,   200,   200,   199,   208,   211,   228,   230,   234,   243,
+     251,   262,   266,   273,   280,   287,   294,   301,   308,   309,
+     315,   319,   326,   332,   341,   345,   349,   350,   359,   360,
+     364,   365,   369,   375,   387,   391,   397,   404,   415,   416,
+     422,   428,   438,   439,   440,   441,   445,   446,   452,   458,
+     467,   468,   474,   483,   484,   490,   499,   500,   506,   512,
+     518,   527,   528,   534,   543,   544,   553,   554,   563,   564,
+     573,   574,   583,   584,   593,   594,   603,   604,   613,   614,
+     623,   624,   625,   626,   627,   628,   629,   630,   631,   632,
+     633,   637,   641,   657,   661,   665,   669,   683,   687,   688,
+     692,   697,   705,   716,   726,   741,   748,   753,   764,   776,
+     777,   778,   779,   783,   787,   788,   797,   806,   815,   824,
+     833,   846,   857,   866,   875,   884,   893,   902,   911,   925,
+     932,   943,   944,   948,   955,   956,   963,   997,   998,   999,
+    1003,  1007,  1008,  1012,  1020,  1021,  1022,  1023,  1024,  1025,
+    1026,  1027,  1028,  1032,  1033,  1041,  1042,  1048,  1057,  1063,
+    1069,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,
+    1087,  1088,  1089,  1090,  1091,  1092,  1093,  1094,  1095,  1096,
+    1097,  1098,  1099,  1100,  1101,  1102,  1103,  1104,  1105,  1106,
+    1107,  1108,  1109,  1110,  1111,  1112,  1113,  1114,  1115,  1116,
+    1117,  1118,  1119,  1120,  1121,  1122,  1123,  1124,  1125,  1126,
+    1127,  1128,  1129,  1130,  1131,  1135,  1146,  1157,  1171,  1177,
+    1186,  1191,  1199,  1214,  1219,  1227,  1233,  1242,  1246,  1252,
+    1253,  1257,  1258,  1262,  1266,  1267,  1268,  1269,  1270,  1271,
+    1272,  1276,  1282,  1291,  1292,  1296,  1302,  1311,  1321,  1333,
+    1339,  1348,  1357,  1363,  1369,  1378,  1382,  1396,  1400,  1401,
+    1405,  1412,  1419,  1429,  1430,  1434,  1436,  1442,  1447,  1456,
+    1462,  1468,  1474,  1480,  1489,  1490,  1494
 };
 #endif
 
@@ -824,18 +856,25 @@ static const char *const yytname[] =
   "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN",
   "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN",
   "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "INVARIANT",
-  "LOWP", "MEDIUMP", "HIGHP", "PRECISION", "VERSION", "EXTENSION", "LINE",
-  "PRAGMA", "COLON", "EOL", "INTERFACE", "OUTPUT", "LAYOUT_TOK", "ASM",
-  "CLASS", "UNION", "ENUM", "TYPEDEF", "TEMPLATE", "THIS", "PACKED",
-  "GOTO", "INLINE_TOK", "NOINLINE", "VOLATILE", "PUBLIC_TOK", "STATIC",
-  "EXTERN", "EXTERNAL", "LONG", "SHORT", "DOUBLE", "HALF", "FIXED",
-  "UNSIGNED", "INPUT", "OUPTUT", "HVEC2", "HVEC3", "HVEC4", "DVEC2",
-  "DVEC3", "DVEC4", "FVEC2", "FVEC3", "FVEC4", "SAMPLER2DRECT",
-  "SAMPLER3DRECT", "SAMPLER2DRECTSHADOW", "SIZEOF", "CAST", "NAMESPACE",
-  "USING", "'('", "')'", "'['", "']'", "'.'", "','", "'+'", "'-'", "'!'",
-  "'~'", "'*'", "'/'", "'%'", "'<'", "'>'", "'&'", "'^'", "'|'", "'?'",
-  "':'", "'='", "';'", "'{'", "'}'", "$accept", "translation_unit", "$@1",
-  "version_statement", "extension_statement_list", "extension_statement",
+  "LOWP", "MEDIUMP", "HIGHP", "SUPERP", "PRECISION", "VERSION",
+  "EXTENSION", "LINE", "PRAGMA", "COLON", "EOL", "INTERFACE", "OUTPUT",
+  "LAYOUT_TOK", "ASM", "CLASS", "UNION", "ENUM", "TYPEDEF", "TEMPLATE",
+  "THIS", "PACKED", "GOTO", "INLINE_TOK", "NOINLINE", "VOLATILE",
+  "PUBLIC_TOK", "STATIC", "EXTERN", "EXTERNAL", "LONG", "SHORT", "DOUBLE",
+  "HALF", "FIXED", "UNSIGNED", "INPUT", "OUPTUT", "HVEC2", "HVEC3",
+  "HVEC4", "DVEC2", "DVEC3", "DVEC4", "FVEC2", "FVEC3", "FVEC4",
+  "SAMPLER2DRECT", "SAMPLER3DRECT", "SAMPLER2DRECTSHADOW", "SIZEOF",
+  "CAST", "NAMESPACE", "USING", "COMMON", "PARTITION", "ACTIVE",
+  "SAMPLERBUFFER", "FILTER", "IMAGE1D", "IMAGE2D", "IMAGE3D", "IMAGECUBE",
+  "IMAGE1DARRAY", "IMAGE2DARRAY", "IIMAGE1D", "IIMAGE2D", "IIMAGE3D",
+  "IIMAGECUBE", "IIMAGE1DARRAY", "IIMAGE2DARRAY", "UIMAGE1D", "UIMAGE2D",
+  "UIMAGE3D", "UIMAGECUBE", "UIMAGE1DARRAY", "UIMAGE2DARRAY",
+  "IMAGE1DSHADOW", "IMAGE2DSHADOW", "IMAGEBUFFER", "IIMAGEBUFFER",
+  "UIMAGEBUFFER", "ROW_MAJOR", "'('", "')'", "'['", "']'", "'.'", "','",
+  "'+'", "'-'", "'!'", "'~'", "'*'", "'/'", "'%'", "'<'", "'>'", "'&'",
+  "'^'", "'|'", "'?'", "':'", "'='", "';'", "'{'", "'}'", "$accept",
+  "translation_unit", "$@1", "version_statement",
+  "extension_statement_list", "extension_statement",
   "external_declaration_list", "variable_identifier", "primary_expression",
   "postfix_expression", "integer_expression", "function_call",
   "function_call_or_method", "function_call_generic",
@@ -892,6 +931,9 @@ static const yytype_uint16 yytoknum[] =
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
+     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
+     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
+     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
       40,    41,    91,    93,    46,    44,    43,    45,    33,   126,
       42,    47,    37,    60,    62,    38,    94,   124,    63,    58,
       61,    59,   123,   125
@@ -901,34 +943,34 @@ static const yytype_uint16 yytoknum[] =
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   184,   186,   185,   187,   187,   188,   188,   189,   190,
-     190,   191,   192,   192,   192,   192,   192,   192,   193,   193,
-     193,   193,   193,   193,   194,   195,   196,   196,   197,   197,
-     198,   198,   199,   199,   200,   201,   201,   201,   202,   202,
-     202,   202,   203,   203,   203,   203,   204,   204,   204,   204,
-     205,   205,   205,   206,   206,   206,   207,   207,   207,   207,
-     207,   208,   208,   208,   209,   209,   210,   210,   211,   211,
-     212,   212,   213,   213,   214,   214,   215,   215,   216,   216,
-     217,   217,   217,   217,   217,   217,   217,   217,   217,   217,
-     217,   218,   218,   219,   220,   220,   220,   221,   222,   222,
-     223,   223,   224,   225,   225,   226,   226,   226,   226,   227,
-     227,   227,   227,   228,   229,   229,   229,   229,   229,   229,
-     229,   230,   230,   230,   230,   230,   230,   230,   230,   231,
-     231,   232,   232,   233,   234,   234,   235,   236,   236,   236,
-     237,   238,   238,   238,   239,   239,   239,   239,   239,   239,
-     239,   239,   239,   240,   240,   241,   241,   241,   242,   242,
-     242,   243,   243,   243,   243,   243,   243,   243,   243,   243,
-     243,   243,   243,   243,   243,   243,   243,   243,   243,   243,
-     243,   243,   243,   243,   243,   243,   243,   243,   243,   243,
-     243,   243,   243,   243,   243,   243,   243,   243,   243,   243,
-     243,   243,   243,   243,   243,   243,   243,   243,   243,   243,
-     243,   243,   243,   243,   243,   244,   244,   244,   245,   245,
-     246,   246,   247,   248,   248,   249,   249,   250,   251,   252,
-     252,   253,   253,   254,   255,   255,   255,   255,   255,   255,
-     255,   256,   256,   257,   257,   258,   258,   259,   259,   260,
-     260,   261,   262,   262,   262,   263,   263,   264,   265,   265,
-     266,   266,   266,   267,   267,   268,   268,   269,   269,   270,
-     270,   270,   270,   270,   271,   271,   272
+       0,   214,   216,   215,   217,   217,   218,   218,   219,   220,
+     220,   221,   222,   222,   222,   222,   222,   222,   223,   223,
+     223,   223,   223,   223,   224,   225,   226,   226,   227,   227,
+     228,   228,   229,   229,   230,   231,   231,   231,   232,   232,
+     232,   232,   233,   233,   233,   233,   234,   234,   234,   234,
+     235,   235,   235,   236,   236,   236,   237,   237,   237,   237,
+     237,   238,   238,   238,   239,   239,   240,   240,   241,   241,
+     242,   242,   243,   243,   244,   244,   245,   245,   246,   246,
+     247,   247,   247,   247,   247,   247,   247,   247,   247,   247,
+     247,   248,   248,   249,   250,   250,   250,   251,   252,   252,
+     253,   253,   254,   255,   255,   256,   256,   256,   256,   257,
+     257,   257,   257,   258,   259,   259,   259,   259,   259,   259,
+     259,   260,   260,   260,   260,   260,   260,   260,   260,   261,
+     261,   262,   262,   263,   264,   264,   265,   266,   266,   266,
+     267,   268,   268,   268,   269,   269,   269,   269,   269,   269,
+     269,   269,   269,   270,   270,   271,   271,   271,   272,   272,
+     272,   273,   273,   273,   273,   273,   273,   273,   273,   273,
+     273,   273,   273,   273,   273,   273,   273,   273,   273,   273,
+     273,   273,   273,   273,   273,   273,   273,   273,   273,   273,
+     273,   273,   273,   273,   273,   273,   273,   273,   273,   273,
+     273,   273,   273,   273,   273,   273,   273,   273,   273,   273,
+     273,   273,   273,   273,   273,   274,   274,   274,   275,   275,
+     276,   276,   277,   278,   278,   279,   279,   280,   281,   282,
+     282,   283,   283,   284,   285,   285,   285,   285,   285,   285,
+     285,   286,   286,   287,   287,   288,   288,   289,   289,   290,
+     290,   291,   292,   292,   292,   293,   293,   294,   295,   295,
+     296,   296,   296,   297,   297,   298,   298,   299,   299,   300,
+     300,   300,   300,   300,   301,   301,   302
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1029,65 +1071,65 @@ static const yytype_int16 yydefgoto[] =
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -353
+#define YYPACT_NINF -351
 static const yytype_int16 yypact[] =
 {
-     -96,   -61,    22,  -353,   -89,  -353,   -75,  -353,   -25,  3345,
-    -353,   -48,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,
-    -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,
-    -353,  -353,  -353,   106,  -353,  -353,  -353,  -353,  -353,  -353,
-    -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,
-    -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,
-    -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,
-    -353,   -78,  -353,  -353,     3,  -353,  -353,  -353,    63,   -80,
-    -353,  -353,  3228,  -353,   -55,   -92,   -54,    -2,  -133,  -353,
-      -5,    50,  -353,    14,  3572,  -353,  -353,  -353,   -56,  -353,
-    3684,  -353,  -353,  -353,    34,  -353,  -353,  -353,   -44,  3572,
-    -353,    14,  -353,  3684,    62,  -353,  -353,   273,  -353,  -353,
-      87,  -353,  -353,  -353,  -353,  -353,  3572,   176,    85,  -353,
-    -137,  -353,  -353,  -353,  -353,  2454,  -353,    33,  3572,    89,
-    1856,  -353,   -15,  -353,   -33,  -353,    28,    42,   997,    43,
-      64,    44,  2136,    66,  2907,    48,    69,   -68,  -353,  -353,
-    -353,  -353,  -353,  2907,  2907,  2907,  -353,  -353,  -353,  -353,
-    -353,   454,  -353,  -353,  -353,   -59,  -353,  -353,  -353,    13,
-     -17,  3058,    71,   270,  2907,    49,   -31,    70,   -76,   103,
-      57,    60,    61,   144,   145,   -85,  -353,  -353,  -104,  -353,
-      58,    83,  -353,  -353,  -353,  -353,  -353,  -353,   635,  -353,
-    -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,   165,
-    3572,  -102,  -353,  2605,  2907,  -353,  -353,  -353,    82,  -353,
-    -353,  1996,    84,  -100,  -353,  -353,  -353,  -353,  -353,    62,
-    -353,  -353,   172,  1524,  2907,  -353,  -353,   -94,  2907,   -90,
-    -353,  2303,  -353,  -353,   -14,  -353,   816,  -353,  -353,  2907,
-    3460,  -353,  -353,  2907,    90,  -353,  -353,  -353,  -353,  -353,
-    -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  2907,  -353,
-    2907,  2907,  2907,  2907,  2907,  2907,  2907,  2907,  2907,  2907,
-    2907,  2907,  2907,  2907,  2907,  2907,  2907,  2907,  2907,  2907,
-    2907,  -353,  -353,  -353,    91,  -353,  -353,  2756,  2907,    72,
-      93,  -353,  -353,  -353,  -353,  2907,    89,  -353,  -353,    97,
-    -353,  -353,  1691,    -7,  -353,    -4,  -353,    94,   179,    99,
-    -353,  -353,    98,    94,   102,  -353,  -353,  -353,  -353,  -353,
-    -353,    49,    49,   -31,   -31,    70,    70,    70,    70,   -76,
-     -76,   103,    57,    60,    61,   144,   145,   -58,  -353,  2907,
-      86,   100,  -353,  2907,    88,   101,  -353,  2907,  -353,    92,
-     104,   997,   127,    95,  1177,  -353,  2907,   107,  2907,   105,
-    -353,  2907,  -353,     2,  2907,  1177,   255,  -353,  -353,  2907,
-     109,  -353,  -353,  -353,  -353,  -353,  -353,  2907,  -353,   130,
-      94,  -353,   997,  -353,  2907,  -353,  -353,  -353,  -353,     4,
-    1357,   259,  1357
+     -85,   -52,    36,  -351,   -60,  -351,   -30,  -351,   -31,  3875,
+    -351,   -27,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,
+    -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,
+    -351,  -351,  -351,    69,  -351,  -351,  -351,  -351,  -351,  -351,
+    -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,
+    -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,
+    -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,
+    -351,   -78,  -351,  -351,     8,  -351,  -351,  -351,    50,   -83,
+    -351,  -351,  3757,  -351,   -63,     4,   -44,     3,  -169,  -351,
+      82,    -5,  -351,   166,  4104,  -351,  -351,  -351,    14,  -351,
+    4217,  -351,  -351,  -351,   135,  -351,  -351,  -351,   -12,  4104,
+    -351,   166,  -351,  4217,   142,  -351,  -351,   401,  -351,  -351,
+      18,  -351,  -351,  -351,  -351,  -351,  4104,   127,   144,  -351,
+    -112,  -351,  -351,  -351,  -351,  2857,  -351,   107,  4104,   146,
+    2254,  -351,    20,  -351,   -99,  -351,    21,    25,  1245,    39,
+      47,    27,  2480,    49,  3397,    31,    53,   -69,  -351,  -351,
+    -351,  -351,  -351,  3397,  3397,  3397,  -351,  -351,  -351,  -351,
+    -351,   612,  -351,  -351,  -351,   -68,  -351,  -351,  -351,    54,
+     -59,  3577,    56,   -36,  3397,   -34,   -25,   112,   -81,   121,
+      45,    38,    44,   159,   158,   -88,  -351,  -351,  -167,  -351,
+      46,    66,  -351,  -351,  -351,  -351,  -351,  -351,   823,  -351,
+    -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,   179,
+    4104,  -178,  -351,  3037,  3397,  -351,  -351,  -351,    67,  -351,
+    -351,  2367,    70,  -121,  -351,  -351,  -351,  -351,  -351,   142,
+    -351,  -351,   181,  1862,  3397,  -351,  -351,  -114,  3397,  -172,
+    -351,  2677,  -351,  -351,   -58,  -351,  1034,  -351,  -351,  3397,
+    3991,  -351,  -351,  3397,    72,  -351,  -351,  -351,  -351,  -351,
+    -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  3397,  -351,
+    3397,  3397,  3397,  3397,  3397,  3397,  3397,  3397,  3397,  3397,
+    3397,  3397,  3397,  3397,  3397,  3397,  3397,  3397,  3397,  3397,
+    3397,  -351,  -351,  -351,    73,  -351,  -351,  3217,  3397,    51,
+      71,  -351,  -351,  -351,  -351,  3397,   146,  -351,  -351,    76,
+    -351,  -351,  2059,   -51,  -351,   -50,  -351,    74,   188,    77,
+    -351,  -351,    78,    74,    80,  -351,  -351,  -351,  -351,  -351,
+    -351,   -34,   -34,   -25,   -25,   112,   112,   112,   112,   -81,
+     -81,   121,    45,    38,    44,   159,   158,  -125,  -351,  3397,
+      63,    81,  -351,  3397,    65,    83,  -351,  3397,  -351,    68,
+      86,  1245,    75,    79,  1455,  -351,  3397,    85,  3397,    84,
+    -351,  3397,  -351,   -49,  3397,  1455,   268,  -351,  -351,  3397,
+      91,  -351,  -351,  -351,  -351,  -351,  -351,  3397,  -351,    87,
+      74,  -351,  1245,  -351,  3397,  -351,  -351,  -351,  -351,   -48,
+    1665,   270,  1665
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,  -353,
-    -353,  -353,  -353,   117,  -353,  -353,  -353,  -353,  -105,  -353,
-     -86,   -69,   -82,   -91,   -21,   -20,    68,   108,    67,    80,
-    -353,  -111,  -148,  -353,  -149,  -219,    12,    32,  -353,  -353,
-    -353,   138,   239,   257,   166,  -353,  -353,  -239,  -353,  -353,
-    -353,   146,  -353,  -353,   -27,  -353,    -9,   -74,  -353,  -353,
-     309,  -353,   250,  -130,  -353,    73,  -244,   147,  -140,  -340,
-    -352,  -322,    19,     9,   311,   225,   154,  -353,  -353,    76,
-    -353,  -353,  -353,  -353,  -353,  -353,  -353,   317,  -353
+    -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,
+    -351,  -351,  -351,    23,  -351,  -351,  -351,  -351,  -105,  -351,
+     -67,   -66,  -134,   -65,    -8,   -10,    -7,    -6,    -4,    -3,
+    -351,  -111,  -148,  -351,  -149,  -221,     6,     9,  -351,  -351,
+    -351,    88,   171,   165,    89,  -351,  -351,  -247,  -351,  -351,
+    -351,    57,  -351,  -351,   -40,  -351,    -9,   -75,  -351,  -351,
+     219,  -351,   161,  -127,  -351,   -16,  -262,    58,  -131,  -299,
+    -350,  -292,   -70,   -82,   220,   134,    64,  -351,  -351,   -11,
+    -351,  -351,  -351,  -351,  -351,  -351,  -351,   224,  -351
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1097,52 +1139,110 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -267
 static const yytype_int16 yytable[] =
 {
-      96,   108,   121,   247,   310,   249,    12,    13,   242,   298,
-     236,  -160,   328,   287,   288,     1,   254,    12,    13,   387,
-       4,    83,     5,   222,   227,   223,   136,     7,   257,   258,
-     226,   386,   128,   265,   122,   123,   124,     8,    33,   142,
-      34,    84,    35,   224,    36,    37,    38,   112,   129,    33,
-     408,    34,   391,    35,    11,    36,    37,    38,   252,   253,
-     307,   300,   407,   391,   362,   316,   133,   104,   303,   119,
-     411,   300,   407,    96,   130,   300,   311,   301,   308,   279,
-     114,   317,   110,   328,   112,   134,   131,   324,   361,   326,
-     132,   121,   -36,   299,    83,   323,   365,   289,   290,   325,
-     139,   236,   327,   259,   109,   260,   135,   300,   201,   111,
-     333,   120,   227,   137,    84,   336,   303,   219,   226,   380,
-     111,   376,    79,   122,   123,   124,   116,   117,   238,   139,
-     337,   139,   239,    79,   396,   283,   284,   398,   138,   201,
-     377,   143,   105,   106,   262,   403,   107,   330,   263,   230,
-     357,   300,   358,   405,   371,   285,   286,   372,   300,   -98,
-     311,   300,   201,   399,   221,   410,   237,   300,   232,   300,
-      75,    76,    77,   327,   261,   338,   339,   340,   226,   226,
+      96,   108,   310,   247,   328,   249,   298,   121,   287,   288,
+    -160,    12,    13,   236,   307,    83,   254,   242,    84,   257,
+     258,   387,   121,   300,   227,   136,   128,     1,   300,     4,
+     226,   131,   308,   265,   112,   132,     5,   326,   142,   122,
+     123,   124,   129,    33,   301,    34,   362,    35,    11,    36,
+      37,    38,   408,   133,   122,   123,   124,     7,   252,   253,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     300,   112,   386,    96,   316,   328,   311,   303,   222,   279,
+     223,   300,   391,     8,   376,   134,   361,   110,    83,   104,
+     317,    84,   238,   391,   365,   323,   239,   324,   224,   325,
+     139,   380,   327,   407,   236,   105,   106,   114,   201,   107,
+     333,   411,   227,   407,   111,   336,   396,   219,   226,   398,
+     299,   -36,   289,   290,   259,   303,   260,   403,    79,   139,
+     337,   139,   262,   330,   109,   405,   263,   300,   377,   201,
+     371,   372,   399,   410,   300,   300,   300,   300,   116,   117,
+     357,   120,   358,   345,   346,   347,   348,    75,    76,    77,
+     311,   130,   201,   122,   123,   124,   280,   281,   282,    12,
+      13,   283,   284,   327,   277,   338,   339,   340,   226,   226,
      226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
-     226,   226,   226,   226,   291,   292,   227,   341,   342,   201,
-     349,   350,   226,   243,   227,   345,   346,   347,   348,   240,
-     226,   219,   122,   123,   124,   311,   343,   344,   383,   280,
-     281,   282,   139,   241,   244,   245,   248,   250,   394,   251,
-     311,   266,   293,   311,   201,   400,   294,   296,   295,   116,
-     297,   311,   201,   -35,   304,   313,   315,   201,   227,   311,
-     319,   -30,   363,   359,   226,   409,   364,   367,   373,   300,
-     374,   375,   -36,   379,   382,   385,   378,   402,   381,   404,
-     395,   412,   351,   384,   352,   389,    12,    13,    14,    15,
-      16,    17,   146,   147,   148,   397,   149,   150,   151,   152,
+     226,   226,   226,   226,   -98,   119,   227,   285,   286,   201,
+     138,    33,   226,    34,   227,    35,   135,    36,    37,    38,
+     226,   219,   291,   292,   137,   311,   341,   342,   383,   343,
+     344,   143,   139,   221,   230,   232,   349,   350,   394,   243,
+     311,   237,   240,   311,   201,   400,   241,   244,   245,   248,
+     250,   311,   201,   251,   294,   261,   266,   201,   227,   311,
+     293,   295,   296,   297,   226,   409,   -35,   116,   304,   319,
+     313,   363,   315,   -30,   364,   359,   367,   373,   374,   300,
+     -36,   375,   111,   378,   379,   381,   382,   385,   395,   384,
+     402,   404,   412,   335,   352,   351,    79,   171,   353,   389,
+     354,   216,   220,   355,   397,   356,   318,   113,   406,   231,
+     366,   320,   388,   401,   118,   256,   115,   321,   305,   306,
+       0,   368,     0,   201,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   201,     0,     0,   201,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   201,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   201,     0,     0,     0,     0,     0,     0,
+       0,   201,     0,   201,    12,    13,    14,    15,    16,    17,
+     146,   147,   148,     0,   149,   150,   151,   152,   153,   154,
+     155,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,     0,    34,     0,
+      35,     0,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,   156,
+     157,   158,   159,   160,   161,   162,     0,     0,   163,   164,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    74,    75,    76,
+      77,     0,    78,     0,     0,     0,     0,     0,     0,     0,
+       0,    79,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    80,     0,    81,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   165,     0,     0,     0,     0,     0,   166,   167,   168,
+     169,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   170,   171,   172,    12,    13,    14,    15,    16,
+      17,   146,   147,   148,     0,   149,   150,   151,   152,   153,
+     154,   155,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,     0,    34,
+       0,    35,     0,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+     156,   157,   158,   159,   160,   161,   162,     0,     0,   163,
+     164,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    74,    75,
+      76,    77,     0,    78,     0,     0,     0,     0,     0,     0,
+       0,     0,    79,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    80,     0,    81,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   165,     0,     0,     0,     0,     0,   166,   167,
+     168,   169,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   170,   171,   255,    12,    13,    14,    15,
+      16,    17,   146,   147,   148,     0,   149,   150,   151,   152,
      153,   154,   155,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,   171,
-      34,   406,    35,   201,    36,    37,    38,    39,    40,    41,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,     0,
+      34,     0,    35,     0,    36,    37,    38,    39,    40,    41,
       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,   156,   157,   158,   159,   160,   161,   162,   305,   216,
-     163,   164,   201,   353,   355,   201,   267,   268,   269,   270,
-     271,   272,   273,   274,   275,   276,   201,   335,   356,    74,
-      75,    76,    77,    78,   220,   318,   306,   113,   231,   366,
-     320,   388,    79,   201,   401,   118,   256,   321,   368,   115,
-       0,   201,     0,   201,   354,     0,     0,     0,     0,     0,
+      72,   156,   157,   158,   159,   160,   161,   162,     0,     0,
+     163,   164,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    74,
+      75,    76,    77,     0,    78,     0,     0,     0,     0,     0,
+       0,     0,     0,    79,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    80,     0,    81,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    80,     0,    81,     0,
        0,     0,     0,   165,     0,     0,     0,     0,     0,   166,
      167,   168,   169,     0,     0,     0,     0,     0,     0,     0,
-     277,     0,     0,     0,   170,   171,   172,    12,    13,    14,
+       0,     0,     0,     0,   170,   171,   302,    12,    13,    14,
       15,    16,    17,   146,   147,   148,     0,   149,   150,   151,
      152,   153,   154,   155,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
@@ -1153,14 +1253,17 @@ static const yytype_int16 yytable[] =
       71,    72,   156,   157,   158,   159,   160,   161,   162,     0,
        0,   163,   164,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      74,    75,    76,    77,    78,     0,     0,     0,     0,     0,
-       0,     0,     0,    79,     0,     0,     0,     0,     0,     0,
+      74,    75,    76,    77,     0,    78,     0,     0,     0,     0,
+       0,     0,     0,     0,    79,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    80,     0,
+      81,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    80,     0,    81,
        0,     0,     0,     0,   165,     0,     0,     0,     0,     0,
      166,   167,   168,   169,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   170,   171,   255,    12,    13,
+       0,     0,     0,     0,     0,   170,   171,   331,    12,    13,
       14,    15,    16,    17,   146,   147,   148,     0,   149,   150,
      151,   152,   153,   154,   155,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
@@ -1171,225 +1274,213 @@ static const yytype_int16 yytable[] =
       70,    71,    72,   156,   157,   158,   159,   160,   161,   162,
        0,     0,   163,   164,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    74,    75,    76,    77,    78,     0,     0,     0,     0,
-       0,     0,     0,     0,    79,     0,     0,     0,     0,     0,
+       0,    74,    75,    76,    77,     0,    78,     0,     0,     0,
+       0,     0,     0,     0,     0,    79,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    80,     0,
-      81,     0,     0,     0,     0,   165,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    80,
+       0,    81,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   165,     0,     0,     0,     0,
        0,   166,   167,   168,   169,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   170,   171,   302,    12,
-      13,    14,    15,    16,    17,   146,   147,   148,     0,   149,
-     150,   151,   152,   153,   154,   155,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,     0,    34,     0,    35,     0,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,   156,   157,   158,   159,   160,   161,
-     162,     0,     0,   163,   164,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   170,   171,    12,    13,
+      14,    15,    16,    17,   146,   147,   148,     0,   149,   390,
+     151,   152,   153,   154,   155,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,     0,    34,     0,    35,     0,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,   156,   157,   158,   159,   160,   161,   162,
+       0,     0,   163,   164,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    74,    75,    76,    77,    78,     0,     0,     0,
+       0,    74,    75,    76,    77,     0,    78,     0,     0,     0,
        0,     0,     0,     0,     0,    79,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    80,
-       0,    81,     0,     0,     0,     0,   165,     0,     0,     0,
-       0,     0,   166,   167,   168,   169,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   170,   171,   331,
-      12,    13,    14,    15,    16,    17,   146,   147,   148,     0,
-     149,   150,   151,   152,   153,   154,   155,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,     0,    34,     0,    35,     0,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,   156,   157,   158,   159,   160,
-     161,   162,     0,     0,   163,   164,     0,     0,     0,     0,
+       0,    81,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    74,    75,    76,    77,    78,     0,     0,
-       0,     0,     0,     0,     0,     0,    79,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   165,     0,     0,     0,     0,
+       0,   166,   167,   168,   169,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   170,   117,    12,    13,
+      14,    15,    16,    17,   146,   147,   148,     0,   149,   390,
+     151,   152,   153,   154,   155,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,     0,    34,     0,    35,     0,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,   156,   157,   158,   159,   160,   161,   162,
+       0,     0,   163,   164,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    74,    75,    76,    77,     0,    78,     0,     0,     0,
+       0,     0,     0,     0,     0,    79,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      80,     0,    81,     0,     0,     0,     0,   165,     0,     0,
-       0,     0,     0,   166,   167,   168,   169,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   170,   171,
-      12,    13,    14,    15,    16,    17,   146,   147,   148,     0,
-     149,   390,   151,   152,   153,   154,   155,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,     0,    34,     0,    35,     0,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,   156,   157,   158,   159,   160,
-     161,   162,     0,     0,   163,   164,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    74,    75,    76,    77,    78,     0,     0,
-       0,     0,     0,     0,     0,     0,    79,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    80,
+       0,    81,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   165,     0,     0,     0,     0,
+       0,   166,   167,   168,   169,    12,    13,    14,    15,    16,
+      17,     0,     0,     0,     0,     0,   170,   171,     0,     0,
+       0,     0,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,     0,    34,
+       0,    35,     0,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+       0,   157,   158,   159,   160,   161,   162,     0,     0,   163,
+     164,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    74,    75,
+      76,    77,     0,    78,     0,     0,     0,     0,     0,     0,
+       0,     0,    79,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      80,     0,    81,     0,     0,     0,     0,   165,     0,     0,
-       0,     0,     0,   166,   167,   168,   169,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   170,   117,
-      12,    13,    14,    15,    16,    17,   146,   147,   148,     0,
-     149,   390,   151,   152,   153,   154,   155,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,     0,    34,     0,    35,     0,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,   156,   157,   158,   159,   160,
-     161,   162,     0,     0,   163,   164,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    74,    75,    76,    77,    78,     0,     0,
-       0,     0,     0,     0,     0,     0,    79,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    80,     0,    81,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   165,     0,     0,     0,     0,     0,   166,   167,
+     168,   169,    12,    13,    14,    15,    16,    17,     0,     0,
+       0,     0,     0,   170,     0,     0,     0,     0,     0,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,     0,    34,     0,    35,     0,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,     0,   157,   158,
+     159,   160,   161,   162,     0,     0,   163,   164,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      80,     0,    81,     0,     0,     0,     0,   165,     0,     0,
-       0,     0,     0,   166,   167,   168,   169,    12,    13,    14,
-      15,    16,    17,     0,     0,     0,     0,     0,   170,   171,
-       0,     0,     0,     0,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-       0,    34,     0,    35,     0,    36,    37,    38,    39,    40,
+       0,     0,     0,     0,     0,   111,    75,    76,    77,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    79,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    80,     0,    81,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   165,
+       0,     0,     0,     0,     0,   166,   167,   168,   169,    14,
+      15,    16,    17,     0,     0,     0,     0,     0,     0,     0,
+    -266,     0,     0,     0,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    39,    40,
       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,     0,   157,   158,   159,   160,   161,   162,     0,
-       0,   163,   164,     0,     0,     0,     0,     0,     0,     0,
+      71,    72,     0,    73,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      74,    75,    76,    77,    78,     0,     0,     0,     0,     0,
-       0,     0,     0,    79,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    75,    76,    77,     0,     0,     0,     0,     0,     0,
+       0,     0,    14,    15,    16,    17,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,     0,     0,     0,     0,     0,     0,    80,     0,
+      81,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,     0,    73,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   235,     0,     0,
+       0,     0,     0,     0,    75,    76,    77,     0,     0,     0,
+       0,     0,     0,     0,     0,    14,    15,    16,    17,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,     0,     0,     0,     0,     0,
+       0,    80,     0,    81,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,     0,   157,
+     158,   159,   160,   161,   162,     0,     0,   163,   164,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     314,     0,     0,     0,     0,     0,     0,    75,    76,    77,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    80,     0,    81,
-       0,     0,     0,     0,   165,     0,     0,     0,     0,     0,
-     166,   167,   168,   169,    12,    13,    14,    15,    16,    17,
-       0,     0,     0,     0,     0,   170,     0,     0,     0,     0,
-       0,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,     0,    34,     0,
-      35,     0,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,     0,
-     157,   158,   159,   160,   161,   162,     0,     0,   163,   164,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   111,    75,    76,
-      77,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      79,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    80,     0,    81,     0,     0,     0,
-       0,   165,     0,     0,     0,     0,     0,   166,   167,   168,
-     169,    14,    15,    16,    17,     0,     0,     0,     0,     0,
-       0,     0,  -266,     0,     0,     0,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,     0,    73,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    75,    76,    77,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     165,     0,     0,     0,     0,     0,   166,   167,   168,   169,
+      12,    13,    14,    15,    16,    17,     0,     0,     0,     0,
+       0,   246,     0,     0,     0,     0,     0,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,     0,    34,     0,    35,     0,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,     0,   157,   158,   159,   160,
+     161,   162,     0,     0,   163,   164,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   111,    75,    76,    77,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    79,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    14,    15,    16,    17,     0,     0,     0,     0,    80,
-       0,    81,     0,     0,     0,     0,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,     0,     0,     0,     0,     0,     0,     0,     0,   235,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,     0,    73,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    75,    76,    77,     0,     0,     0,     0,
+       0,    80,     0,    81,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    14,    15,    16,    17,     0,   165,     0,     0,
+       0,     0,     0,   166,   167,   168,   169,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,     0,   157,   158,   159,   160,
+     161,   162,     0,     0,   163,   164,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    14,    15,    16,    17,     0,     0,     0,     0,    80,
-       0,    81,     0,     0,     0,     0,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,     0,     0,     0,     0,     0,     0,     0,     0,   314,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,     0,   157,   158,   159,   160,   161,
-     162,     0,     0,   163,   164,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    75,    76,    77,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    75,    76,    77,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    80,
-       0,    81,     0,     0,     0,     0,   165,     0,     0,     0,
-       0,     0,   166,   167,   168,   169,    12,    13,    14,    15,
-      16,    17,     0,     0,     0,     0,     0,   246,     0,     0,
-       0,     0,     0,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,     0,
-      34,     0,    35,     0,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,     0,   157,   158,   159,   160,   161,   162,     0,     0,
-     163,   164,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   111,
-      75,    76,    77,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    79,     0,     0,     0,     0,     0,     0,     0,
+       0,    80,     0,    81,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    80,     0,    81,    14,
-      15,    16,    17,   165,     0,     0,     0,     0,     0,   166,
-     167,   168,   169,     0,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,     0,   157,   158,   159,   160,   161,   162,     0,
-       0,   163,   164,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    14,    15,    16,    17,     0,   165,     0,     0,
+     225,     0,     0,   166,   167,   168,   169,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,     0,   157,   158,   159,   160,
+     161,   162,     0,     0,   163,   164,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    75,    76,    77,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    75,    76,    77,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    80,     0,    81,
-      14,    15,    16,    17,   165,     0,     0,   225,     0,     0,
-     166,   167,   168,   169,     0,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,     0,   157,   158,   159,   160,   161,   162,
-       0,     0,   163,   164,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    75,    76,    77,     0,     0,     0,     0,     0,
+       0,    80,     0,    81,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    14,    15,    16,    17,     0,   165,     0,     0,
+     309,     0,     0,   166,   167,   168,   169,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,     0,   157,   158,   159,   160,
+     161,   162,     0,     0,   163,   164,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    80,     0,
-      81,    14,    15,    16,    17,   165,     0,     0,   309,     0,
-       0,   166,   167,   168,   169,     0,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,     0,   157,   158,   159,   160,   161,
-     162,     0,     0,   163,   164,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    75,    76,    77,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    75,    76,    77,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    80,
-       0,    81,    14,    15,    16,    17,   165,     0,     0,   360,
-       0,     0,   166,   167,   168,   169,     0,    18,    19,    20,
+       0,    80,     0,    81,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    14,    15,    16,    17,     0,   165,     0,     0,
+     360,     0,     0,   166,   167,   168,   169,    18,    19,    20,
       21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
       31,    32,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
@@ -1403,34 +1494,38 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      80,     0,    81,    14,    15,    16,    17,   165,     0,     0,
-       0,     0,     0,   166,   167,   168,   169,     0,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,   264,     0,   157,   158,   159,
-     160,   161,   162,     0,     0,   163,   164,     0,     0,     0,
+       0,    80,     0,    81,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    75,    76,    77,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    14,    15,    16,    17,     0,   165,     0,     0,
+       0,     0,     0,   166,   167,   168,   169,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,   264,     0,   157,   158,   159,   160,
+     161,   162,     0,     0,   163,   164,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    75,    76,    77,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    80,     0,    81,     0,     0,     0,     0,   165,     0,
-       0,     0,     0,     0,   166,   167,   168,   169,    -3,     0,
-       0,    12,    13,    14,    15,    16,    17,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,     0,    34,     0,    35,     0,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,     0,    73,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    80,     0,    81,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    74,    75,    76,    77,    78,     0,
+       0,     0,     0,     0,     0,     0,     0,    -3,     0,     0,
+      12,    13,    14,    15,    16,    17,     0,   165,     0,     0,
+       0,     0,     0,   166,   167,   168,   169,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,     0,    34,     0,    35,     0,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,     0,    73,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    74,    75,    76,    77,     0,    78,     0,
        0,     0,     0,     0,     0,     0,     0,    79,    12,    13,
       14,    15,    16,    17,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,    18,    19,    20,    21,    22,
@@ -1442,30 +1537,19 @@ static const yytype_int16 yytable[] =
       70,    71,    72,     0,    73,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    74,    75,    76,    77,    78,     0,     0,     0,     0,
-       0,     0,     0,     0,    79,    14,    15,    16,    17,     0,
+       0,    74,    75,    76,    77,     0,    78,     0,     0,     0,
+       0,     0,     0,     0,     0,    79,    14,    15,    16,    17,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,     0,     0,     0,    80,     0,
-      81,     0,     0,     0,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,     0,   334,
-       0,     0,     0,     0,   162,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    75,    76,    77,
-       0,     0,     0,     0,     0,     0,     0,    14,    15,    16,
-      17,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,     0,     0,     0,
-       0,     0,     0,    80,     0,    81,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-       0,    73,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,     0,     0,     0,    80,
+       0,    81,     0,     0,     0,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,     0,
+     334,     0,     0,     0,     0,   162,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    75,
-      76,    77,     0,     0,     0,     0,     0,     0,     0,    14,
+       0,     0,     0,     0,     0,     0,     0,     0,    75,    76,
+      77,     0,     0,     0,     0,     0,     0,     0,     0,    14,
       15,    16,    17,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,     0,
@@ -1474,63 +1558,133 @@ static const yytype_int16 yytable[] =
       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
       71,    72,     0,    73,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    75,    76,    77,     0,     0,     0,     0,     0,     0,
+       0,     0,    14,    15,    16,    17,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,     0,     0,     0,     0,     0,     0,    80,     0,
+      81,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,     0,    73,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    80,     0,    81
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    80,     0,    81
 };
 
 static const yytype_int16 yycheck[] =
 {
-       9,    79,     4,   152,   223,   154,     3,     4,   148,    94,
-     140,    79,   251,    89,    90,   111,   165,     3,     4,   371,
-      81,     9,     0,   160,   135,   162,   100,   116,    87,    88,
-     135,   371,   165,   181,    36,    37,    38,   112,    35,   113,
-      37,     9,    39,   180,    41,    42,    43,    74,   181,    35,
-     402,    37,   374,    39,    79,    41,    42,    43,   163,   164,
-     162,   165,   402,   385,   308,   165,    93,   115,   208,   161,
-     410,   165,   412,    82,    79,   165,   224,   181,   180,   184,
-     160,   181,    79,   322,   111,    94,    36,   181,   307,   179,
-      40,     4,   160,   178,    82,   244,   315,   173,   174,   248,
-     109,   231,   251,   162,   182,   164,   162,   165,   117,   106,
-     259,   165,   223,    79,    82,   263,   256,   126,   223,   363,
-     106,   179,   119,    36,    37,    38,   181,   182,   161,   138,
-     278,   140,   165,   119,   378,   166,   167,   381,   182,   148,
-     359,    79,    36,    37,   161,   389,    40,   161,   165,   116,
-     299,   165,   300,   397,   161,    85,    86,   161,   165,   161,
-     308,   165,   171,   161,    79,   161,   181,   165,    79,   165,
-     107,   108,   109,   322,   161,   280,   281,   282,   283,   284,
+       9,    79,   223,   152,   251,   154,    94,     4,    89,    90,
+      79,     3,     4,   140,   192,     9,   165,   148,     9,    87,
+      88,   371,     4,   195,   135,   100,   195,   112,   195,    81,
+     135,    36,   210,   181,    74,    40,     0,   209,   113,    36,
+      37,    38,   211,    35,   211,    37,   308,    39,    79,    41,
+      42,    43,   402,    93,    36,    37,    38,   117,   163,   164,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     195,   111,   371,    82,   195,   322,   224,   208,   190,   184,
+     192,   195,   374,   113,   209,    94,   307,    79,    82,   116,
+     211,    82,   191,   385,   315,   244,   195,   211,   210,   248,
+     109,   363,   251,   402,   231,    36,    37,   190,   117,    40,
+     259,   410,   223,   412,   106,   263,   378,   126,   223,   381,
+     208,   190,   203,   204,   192,   256,   194,   389,   120,   138,
+     278,   140,   191,   191,   212,   397,   195,   195,   359,   148,
+     191,   191,   191,   191,   195,   195,   195,   195,   211,   212,
+     299,   195,   300,   287,   288,   289,   290,   107,   108,   109,
+     308,    79,   171,    36,    37,    38,   200,   201,   202,     3,
+       4,   196,   197,   322,   210,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,    91,    92,   307,   283,   284,   208,
-     291,   292,   307,   160,   315,   287,   288,   289,   290,   181,
-     315,   220,    36,    37,    38,   363,   285,   286,   367,   170,
-     171,   172,   231,   181,   160,   181,   160,   179,   376,   160,
-     378,   160,   175,   381,   243,   384,   176,    93,   177,   181,
-      95,   389,   251,   160,    79,   163,   162,   256,   359,   397,
-      78,   161,   180,   162,   359,   404,   163,   160,    79,   165,
-     161,   163,   160,   163,   163,   161,   180,    12,   180,   160,
-     163,    12,   293,   181,   294,   180,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,   180,    13,    14,    15,    16,
+     295,   296,   297,   298,   191,   191,   307,    85,    86,   208,
+     212,    35,   307,    37,   315,    39,   192,    41,    42,    43,
+     315,   220,    91,    92,    79,   363,   283,   284,   367,   285,
+     286,    79,   231,    79,   117,    79,   291,   292,   376,   190,
+     378,   211,   211,   381,   243,   384,   211,   190,   211,   190,
+     209,   389,   251,   190,   206,   191,   190,   256,   359,   397,
+     205,   207,    93,    95,   359,   404,   190,   211,    79,    78,
+     193,   210,   192,   191,   193,   192,   190,    79,   191,   195,
+     190,   193,   106,   210,   193,   210,   193,   191,   193,   211,
+      12,   190,    12,   260,   294,   293,   120,   212,   295,   210,
+     296,   120,   127,   297,   210,   298,   239,    78,   211,   138,
+     316,   243,   372,   385,    84,   171,    82,   243,   220,   220,
+      -1,   322,    -1,   322,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   371,    -1,    -1,   374,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   385,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   402,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   410,    -1,   412,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    -1,    37,    -1,
+      39,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    -1,    -1,    87,    88,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,   108,
+     109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   120,    -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,   154,    -1,   156,    -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,   190,    -1,    -1,    -1,    -1,    -1,   196,   197,   198,
+     199,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   211,   212,   213,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    -1,    37,
+      -1,    39,    -1,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    -1,    -1,    87,
+      88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,
+     108,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   120,    -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,   154,    -1,   156,    -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,   190,    -1,    -1,    -1,    -1,    -1,   196,   197,
+     198,   199,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   211,   212,   213,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,   182,
-      37,   181,    39,   322,    41,    42,    43,    44,    45,    46,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    -1,
+      37,    -1,    39,    -1,    41,    42,    43,    44,    45,    46,
       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
       67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    83,    84,   220,   120,
-      87,    88,   371,   295,   297,   374,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,   105,   385,   260,   298,   106,
-     107,   108,   109,   110,   127,   239,   220,    78,   138,   316,
-     243,   372,   119,   402,   385,    84,   171,   243,   322,    82,
-      -1,   410,    -1,   412,   296,    -1,    -1,    -1,    -1,    -1,
+      77,    78,    79,    80,    81,    82,    83,    84,    -1,    -1,
+      87,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
+     107,   108,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   120,    -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,   154,    -1,   156,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   153,    -1,   155,    -1,
-      -1,    -1,    -1,   160,    -1,    -1,    -1,    -1,    -1,   166,
-     167,   168,   169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     180,    -1,    -1,    -1,   181,   182,   183,     3,     4,     5,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   190,    -1,    -1,    -1,    -1,    -1,   196,
+     197,   198,   199,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   211,   212,   213,     3,     4,     5,
        6,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
@@ -1541,14 +1695,17 @@ static const yytype_int16 yycheck[] =
       76,    77,    78,    79,    80,    81,    82,    83,    84,    -1,
       -1,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     106,   107,   108,   109,   110,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,    -1,
+     106,   107,   108,   109,    -1,   111,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   120,    -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,   154,    -1,
+     156,    -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,   153,    -1,   155,
-      -1,    -1,    -1,    -1,   160,    -1,    -1,    -1,    -1,    -1,
-     166,   167,   168,   169,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   181,   182,   183,     3,     4,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   190,    -1,    -1,    -1,    -1,    -1,
+     196,   197,   198,   199,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   211,   212,   213,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
@@ -1559,225 +1716,213 @@ static const yytype_int16 yycheck[] =
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
       -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   106,   107,   108,   109,   110,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,
+      -1,   106,   107,   108,   109,    -1,   111,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   120,    -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,   153,    -1,
-     155,    -1,    -1,    -1,    -1,   160,    -1,    -1,    -1,    -1,
-      -1,   166,   167,   168,   169,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   181,   182,   183,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    -1,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    -1,    37,    -1,    39,    -1,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   154,
+      -1,   156,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   190,    -1,    -1,    -1,    -1,
+      -1,   196,   197,   198,   199,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   211,   212,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    -1,    37,    -1,    39,    -1,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      -1,    -1,    87,    88,    -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,   153,
-      -1,   155,    -1,    -1,    -1,    -1,   160,    -1,    -1,    -1,
-      -1,    -1,   166,   167,   168,   169,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   181,   182,   183,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    -1,    37,    -1,    39,    -1,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
+      -1,   106,   107,   108,   109,    -1,   111,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   154,
+      -1,   156,    -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,
-     153,    -1,   155,    -1,    -1,    -1,    -1,   160,    -1,    -1,
-      -1,    -1,    -1,   166,   167,   168,   169,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   181,   182,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    -1,    37,    -1,    39,    -1,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   190,    -1,    -1,    -1,    -1,
+      -1,   196,   197,   198,   199,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   211,   212,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    -1,    37,    -1,    39,    -1,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,
+      -1,   106,   107,   108,   109,    -1,   111,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   120,    -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,   154,
+      -1,   156,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     153,    -1,   155,    -1,    -1,    -1,    -1,   160,    -1,    -1,
-      -1,    -1,    -1,   166,   167,   168,   169,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   181,   182,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    -1,    37,    -1,    39,    -1,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   190,    -1,    -1,    -1,    -1,
+      -1,   196,   197,   198,   199,     3,     4,     5,     6,     7,
+       8,    -1,    -1,    -1,    -1,    -1,   211,   212,    -1,    -1,
+      -1,    -1,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    -1,    37,
+      -1,    39,    -1,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      -1,    79,    80,    81,    82,    83,    84,    -1,    -1,    87,
+      88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,
+     108,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   120,    -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,   154,    -1,   156,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     153,    -1,   155,    -1,    -1,    -1,    -1,   160,    -1,    -1,
-      -1,    -1,    -1,   166,   167,   168,   169,     3,     4,     5,
-       6,     7,     8,    -1,    -1,    -1,    -1,    -1,   181,   182,
-      -1,    -1,    -1,    -1,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      -1,    37,    -1,    39,    -1,    41,    42,    43,    44,    45,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   190,    -1,    -1,    -1,    -1,    -1,   196,   197,
+     198,   199,     3,     4,     5,     6,     7,     8,    -1,    -1,
+      -1,    -1,    -1,   211,    -1,    -1,    -1,    -1,    -1,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    -1,    37,    -1,    39,    -1,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
+      81,    82,    83,    84,    -1,    -1,    87,    88,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   106,   107,   108,   109,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   120,
+      -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,   154,    -1,   156,    -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,   190,
+      -1,    -1,    -1,    -1,    -1,   196,   197,   198,   199,     5,
+       6,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     211,    -1,    -1,    -1,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    45,
       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    -1,    79,    80,    81,    82,    83,    84,    -1,
-      -1,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     106,   107,   108,   109,   110,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   107,   108,   109,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     5,     6,     7,     8,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,   154,    -1,
+     156,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   153,    -1,   155,
-      -1,    -1,    -1,    -1,   160,    -1,    -1,    -1,    -1,    -1,
-     166,   167,   168,   169,     3,     4,     5,     6,     7,     8,
-      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,    -1,
-      -1,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    -1,    37,    -1,
-      39,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,    77,    -1,
-      79,    80,    81,    82,    83,    84,    -1,    -1,    87,    88,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   213,    -1,    -1,
+      -1,    -1,    -1,    -1,   107,   108,   109,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     5,     6,     7,     8,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
+      -1,   154,    -1,   156,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    -1,    79,
+      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,   108,
-     109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     213,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,   109,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   153,    -1,   155,    -1,    -1,    -1,
-      -1,   160,    -1,    -1,    -1,    -1,    -1,   166,   167,   168,
-     169,     5,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   181,    -1,    -1,    -1,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   107,   108,   109,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   154,    -1,   156,    -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,     5,     6,     7,     8,    -1,    -1,    -1,    -1,   153,
-      -1,   155,    -1,    -1,    -1,    -1,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   183,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,
+     190,    -1,    -1,    -1,    -1,    -1,   196,   197,   198,   199,
+       3,     4,     5,     6,     7,     8,    -1,    -1,    -1,    -1,
+      -1,   211,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    -1,    37,    -1,    39,    -1,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    -1,    79,    80,    81,    82,
+      83,    84,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   107,   108,   109,    -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,   154,    -1,   156,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,     5,     6,     7,     8,    -1,    -1,    -1,    -1,   153,
-      -1,   155,    -1,    -1,    -1,    -1,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   183,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    -1,    79,    80,    81,    82,    83,
-      84,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   107,   108,   109,    -1,    -1,    -1,    -1,
+      -1,    -1,     5,     6,     7,     8,    -1,   190,    -1,    -1,
+      -1,    -1,    -1,   196,   197,   198,   199,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    -1,    79,    80,    81,    82,
+      83,    84,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   107,   108,   109,    -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,   153,
-      -1,   155,    -1,    -1,    -1,    -1,   160,    -1,    -1,    -1,
-      -1,    -1,   166,   167,   168,   169,     3,     4,     5,     6,
-       7,     8,    -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,
-      -1,    -1,    -1,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    -1,
-      37,    -1,    39,    -1,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    -1,    79,    80,    81,    82,    83,    84,    -1,    -1,
-      87,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
-     107,   108,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   119,    -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,   153,    -1,   155,     5,
-       6,     7,     8,   160,    -1,    -1,    -1,    -1,    -1,   166,
-     167,   168,   169,    -1,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    -1,    79,    80,    81,    82,    83,    84,    -1,
-      -1,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   154,    -1,   156,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   107,   108,   109,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     5,     6,     7,     8,    -1,   190,    -1,    -1,
+     193,    -1,    -1,   196,   197,   198,   199,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    -1,    79,    80,    81,    82,
+      83,    84,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   107,   108,   109,    -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,   153,    -1,   155,
-       5,     6,     7,     8,   160,    -1,    -1,   163,    -1,    -1,
-     166,   167,   168,   169,    -1,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    -1,    79,    80,    81,    82,    83,    84,
-      -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   107,   108,   109,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   154,    -1,   156,    -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,     5,     6,     7,     8,    -1,   190,    -1,    -1,
+     193,    -1,    -1,   196,   197,   198,   199,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    -1,    79,    80,    81,    82,
+      83,    84,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   107,   108,   109,    -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,   153,    -1,
-     155,     5,     6,     7,     8,   160,    -1,    -1,   163,    -1,
-      -1,   166,   167,   168,   169,    -1,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    -1,    79,    80,    81,    82,    83,
-      84,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   107,   108,   109,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   154,    -1,   156,    -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,   153,
-      -1,   155,     5,     6,     7,     8,   160,    -1,    -1,   163,
-      -1,    -1,   166,   167,   168,   169,    -1,    20,    21,    22,
+      -1,    -1,     5,     6,     7,     8,    -1,   190,    -1,    -1,
+     193,    -1,    -1,   196,   197,   198,   199,    20,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    44,    45,    46,    47,    48,    49,    50,    51,    52,
@@ -1791,132 +1936,137 @@ static const yytype_int16 yycheck[] =
       -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,
-     153,    -1,   155,     5,     6,     7,     8,   160,    -1,    -1,
-      -1,    -1,    -1,   166,   167,   168,   169,    -1,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    -1,    79,    80,    81,
-      82,    83,    84,    -1,    -1,    87,    88,    -1,    -1,    -1,
+      -1,   154,    -1,   156,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   107,   108,   109,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     5,     6,     7,     8,    -1,   190,    -1,    -1,
+      -1,    -1,    -1,   196,   197,   198,   199,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    -1,    79,    80,    81,    82,
+      83,    84,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   107,   108,   109,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   153,    -1,   155,    -1,    -1,    -1,    -1,   160,    -1,
-      -1,    -1,    -1,    -1,   166,   167,   168,   169,     0,    -1,
-      -1,     3,     4,     5,     6,     7,     8,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    -1,    37,    -1,    39,    -1,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    -1,    79,    -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,   106,   107,   108,   109,   110,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,     3,     4,
+      -1,   154,    -1,   156,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,
+       3,     4,     5,     6,     7,     8,    -1,   190,    -1,    -1,
+      -1,    -1,    -1,   196,   197,   198,   199,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    -1,    37,    -1,    39,    -1,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    -1,    79,    -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,   106,   107,   108,   109,    -1,   111,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   120,     3,     4,
        5,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,   153,    37,   155,    39,    -1,    41,    42,    43,    44,
+      35,   154,    37,   156,    39,    -1,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    -1,    79,    -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,   106,   107,   108,   109,   110,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   119,     5,     6,     7,     8,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    -1,    -1,    -1,   153,    -1,
-     155,    -1,    -1,    -1,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    -1,    79,
-      -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,
+      -1,   106,   107,   108,   109,    -1,   111,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   120,     5,     6,     7,     8,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,   109,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,     6,     7,
-       8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,
-      -1,    -1,    -1,   153,    -1,   155,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    -1,    -1,    -1,   154,
+      -1,   156,    -1,    -1,    -1,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    -1,
+      79,    -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
-     108,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,
+     109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,
        6,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    20,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
-      -1,    -1,    -1,    -1,    -1,   153,    -1,   155,    44,    45,
+      -1,    -1,    -1,    -1,    -1,   154,    -1,   156,    44,    45,
       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
       76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   107,   108,   109,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     5,     6,     7,     8,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,   154,    -1,
+     156,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   153,    -1,   155
+      -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,   154,    -1,   156
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   111,   185,   187,    81,     0,   188,   116,   112,   186,
-     189,    79,     3,     4,     5,     6,     7,     8,    20,    21,
+       0,   112,   215,   217,    81,     0,   218,   117,   113,   216,
+     219,    79,     3,     4,     5,     6,     7,     8,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    37,    39,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    79,   106,   107,   108,   109,   110,   119,
-     153,   155,   190,   220,   221,   222,   223,   224,   229,   230,
-     231,   232,   233,   236,   238,   239,   240,   241,   242,   243,
-     244,   245,   271,   272,   115,    36,    37,    40,    79,   182,
-      79,   106,   238,   244,   160,   271,   181,   182,   258,   161,
-     165,     4,    36,    37,    38,   226,   227,   237,   165,   181,
-      79,    36,    40,   238,   240,   162,   241,    79,   182,   240,
-     246,   247,   241,    79,   234,   235,     9,    10,    11,    13,
+      75,    76,    77,    79,   106,   107,   108,   109,   111,   120,
+     154,   156,   220,   250,   251,   252,   253,   254,   259,   260,
+     261,   262,   263,   266,   268,   269,   270,   271,   272,   273,
+     274,   275,   301,   302,   116,    36,    37,    40,    79,   212,
+      79,   106,   268,   274,   190,   301,   211,   212,   288,   191,
+     195,     4,    36,    37,    38,   256,   257,   267,   195,   211,
+      79,    36,    40,   268,   270,   192,   271,    79,   212,   270,
+     276,   277,   271,    79,   264,   265,     9,    10,    11,    13,
       14,    15,    16,    17,    18,    19,    78,    79,    80,    81,
-      82,    83,    84,    87,    88,   160,   166,   167,   168,   169,
-     181,   182,   183,   191,   192,   193,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   218,   220,
-     221,   240,   251,   252,   253,   254,   255,   256,   259,   260,
-     261,   262,   264,   265,   266,   270,   226,   225,   228,   240,
-     227,    79,   160,   162,   180,   163,   202,   215,   219,   240,
-     116,   246,    79,   248,   249,   183,   247,   181,   161,   165,
-     181,   181,   252,   160,   160,   181,   181,   218,   160,   218,
-     179,   160,   202,   202,   218,   183,   259,    87,    88,   162,
-     164,   161,   161,   165,    77,   216,   160,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   180,   217,   202,
-     170,   171,   172,   166,   167,    85,    86,    89,    90,   173,
-     174,    91,    92,   175,   176,   177,    93,    95,    94,   178,
-     165,   181,   183,   252,    79,   225,   228,   162,   180,   163,
-     219,   216,   250,   163,   183,   162,   165,   181,   235,    78,
-     251,   260,   267,   218,   181,   218,   179,   218,   231,   263,
-     161,   183,   194,   218,    79,   197,   216,   216,   202,   202,
-     202,   204,   204,   205,   205,   206,   206,   206,   206,   207,
-     207,   208,   209,   210,   211,   212,   213,   218,   216,   162,
-     163,   219,   250,   180,   163,   219,   249,   160,   263,   268,
-     269,   161,   161,    79,   161,   163,   179,   219,   180,   163,
-     250,   180,   163,   218,   181,   161,   253,   254,   256,   180,
-      14,   255,   257,   258,   216,   163,   250,   180,   250,   161,
-     218,   257,    12,   250,   160,   250,   181,   253,   254,   218,
-     161,   253,    12
+      82,    83,    84,    87,    88,   190,   196,   197,   198,   199,
+     211,   212,   213,   221,   222,   223,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   248,   250,
+     251,   270,   281,   282,   283,   284,   285,   286,   289,   290,
+     291,   292,   294,   295,   296,   300,   256,   255,   258,   270,
+     257,    79,   190,   192,   210,   193,   232,   245,   249,   270,
+     117,   276,    79,   278,   279,   213,   277,   211,   191,   195,
+     211,   211,   282,   190,   190,   211,   211,   248,   190,   248,
+     209,   190,   232,   232,   248,   213,   289,    87,    88,   192,
+     194,   191,   191,   195,    77,   246,   190,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   210,   247,   232,
+     200,   201,   202,   196,   197,    85,    86,    89,    90,   203,
+     204,    91,    92,   205,   206,   207,    93,    95,    94,   208,
+     195,   211,   213,   282,    79,   255,   258,   192,   210,   193,
+     249,   246,   280,   193,   213,   192,   195,   211,   265,    78,
+     281,   290,   297,   248,   211,   248,   209,   248,   261,   293,
+     191,   213,   224,   248,    79,   227,   246,   246,   232,   232,
+     232,   234,   234,   235,   235,   236,   236,   236,   236,   237,
+     237,   238,   239,   240,   241,   242,   243,   248,   246,   192,
+     193,   249,   280,   210,   193,   249,   279,   190,   293,   298,
+     299,   191,   191,    79,   191,   193,   209,   249,   210,   193,
+     280,   210,   193,   248,   211,   191,   283,   284,   286,   210,
+      14,   285,   287,   288,   246,   193,   280,   210,   280,   191,
+     248,   287,    12,   280,   190,   280,   211,   283,   284,   248,
+     191,   283,    12
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1931,9 +2081,18 @@ static const yytype_uint16 yystos[] =
 
 /* Like YYERROR except do call yyerror.  This remains here temporarily
    to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
 
 #define YYFAIL         goto yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
@@ -1990,7 +2149,7 @@ while (YYID (0))
    we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
 #  define YY_LOCATION_PRINT(File, Loc)                 \
      fprintf (File, "%d.%d-%d.%d",                     \
              (Loc).first_line, (Loc).first_column,     \
@@ -2579,7 +2738,7 @@ YYLTYPE yylloc;
   yyvsp = yyvs;
   yylsp = yyls;
 
-#if YYLTYPE_IS_TRIVIAL
+#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
   /* Initialize the default location before parsing starts.  */
   yylloc.first_line   = yylloc.last_line   = 1;
   yylloc.first_column = yylloc.last_column = 1;
@@ -2769,8 +2928,8 @@ yyreduce:
     {
         case 2:
 
-/* Line 1455 of yacc.c  */
-#line 193 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 200 "glsl_parser.ypp"
     {
           _mesa_glsl_initialize_types(state);
        ;}
@@ -2778,8 +2937,8 @@ yyreduce:
 
   case 4:
 
-/* Line 1455 of yacc.c  */
-#line 201 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 208 "glsl_parser.ypp"
     {
           state->language_version = 110;
        ;}
@@ -2787,8 +2946,8 @@ yyreduce:
 
   case 5:
 
-/* Line 1455 of yacc.c  */
-#line 205 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 212 "glsl_parser.ypp"
     {
           switch ((yyvsp[(2) - (3)].n)) {
           case 110:
@@ -2807,8 +2966,8 @@ yyreduce:
 
   case 8:
 
-/* Line 1455 of yacc.c  */
-#line 228 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 235 "glsl_parser.ypp"
     {
           if (!_mesa_glsl_process_extension((yyvsp[(2) - (5)].identifier), & (yylsp[(2) - (5)]), (yyvsp[(4) - (5)].identifier), & (yylsp[(4) - (5)]), state)) {
              YYERROR;
@@ -2818,8 +2977,8 @@ yyreduce:
 
   case 9:
 
-/* Line 1455 of yacc.c  */
-#line 237 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 244 "glsl_parser.ypp"
     {
           /* FINISHME: The NULL test is only required because 'precision'
            * FINISHME: statements are not yet supported.
@@ -2831,8 +2990,8 @@ yyreduce:
 
   case 10:
 
-/* Line 1455 of yacc.c  */
-#line 245 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 252 "glsl_parser.ypp"
     {
           /* FINISHME: The NULL test is only required because 'precision'
            * FINISHME: statements are not yet supported.
@@ -2844,8 +3003,8 @@ yyreduce:
 
   case 12:
 
-/* Line 1455 of yacc.c  */
-#line 260 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 267 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_identifier, NULL, NULL, NULL);
@@ -2856,8 +3015,8 @@ yyreduce:
 
   case 13:
 
-/* Line 1455 of yacc.c  */
-#line 267 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 274 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_int_constant, NULL, NULL, NULL);
@@ -2868,8 +3027,8 @@ yyreduce:
 
   case 14:
 
-/* Line 1455 of yacc.c  */
-#line 274 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 281 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_uint_constant, NULL, NULL, NULL);
@@ -2880,8 +3039,8 @@ yyreduce:
 
   case 15:
 
-/* Line 1455 of yacc.c  */
-#line 281 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 288 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_float_constant, NULL, NULL, NULL);
@@ -2892,8 +3051,8 @@ yyreduce:
 
   case 16:
 
-/* Line 1455 of yacc.c  */
-#line 288 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 295 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_bool_constant, NULL, NULL, NULL);
@@ -2904,8 +3063,8 @@ yyreduce:
 
   case 17:
 
-/* Line 1455 of yacc.c  */
-#line 295 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 302 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(2) - (3)].expression);
        ;}
@@ -2913,8 +3072,8 @@ yyreduce:
 
   case 19:
 
-/* Line 1455 of yacc.c  */
-#line 303 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 310 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_array_index, (yyvsp[(1) - (4)].expression), (yyvsp[(3) - (4)].expression), NULL);
@@ -2924,8 +3083,8 @@ yyreduce:
 
   case 20:
 
-/* Line 1455 of yacc.c  */
-#line 309 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 316 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (1)].expression);
        ;}
@@ -2933,8 +3092,8 @@ yyreduce:
 
   case 21:
 
-/* Line 1455 of yacc.c  */
-#line 313 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 320 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), NULL, NULL);
@@ -2945,8 +3104,8 @@ yyreduce:
 
   case 22:
 
-/* Line 1455 of yacc.c  */
-#line 320 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 327 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_post_inc, (yyvsp[(1) - (2)].expression), NULL, NULL);
@@ -2956,8 +3115,8 @@ yyreduce:
 
   case 23:
 
-/* Line 1455 of yacc.c  */
-#line 326 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 333 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_post_dec, (yyvsp[(1) - (2)].expression), NULL, NULL);
@@ -2967,8 +3126,8 @@ yyreduce:
 
   case 27:
 
-/* Line 1455 of yacc.c  */
-#line 344 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 351 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL);
@@ -2978,8 +3137,8 @@ yyreduce:
 
   case 32:
 
-/* Line 1455 of yacc.c  */
-#line 363 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 370 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (2)].expression);
           (yyval.expression)->set_location(yylloc);
@@ -2989,8 +3148,8 @@ yyreduce:
 
   case 33:
 
-/* Line 1455 of yacc.c  */
-#line 369 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 376 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (3)].expression);
           (yyval.expression)->set_location(yylloc);
@@ -3000,8 +3159,8 @@ yyreduce:
 
   case 35:
 
-/* Line 1455 of yacc.c  */
-#line 385 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 392 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_function_expression((yyvsp[(1) - (1)].type_specifier));
@@ -3011,8 +3170,8 @@ yyreduce:
 
   case 36:
 
-/* Line 1455 of yacc.c  */
-#line 391 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 398 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier));
@@ -3023,8 +3182,8 @@ yyreduce:
 
   case 37:
 
-/* Line 1455 of yacc.c  */
-#line 398 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 405 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier));
@@ -3035,8 +3194,8 @@ yyreduce:
 
   case 39:
 
-/* Line 1455 of yacc.c  */
-#line 410 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 417 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_pre_inc, (yyvsp[(2) - (2)].expression), NULL, NULL);
@@ -3046,8 +3205,8 @@ yyreduce:
 
   case 40:
 
-/* Line 1455 of yacc.c  */
-#line 416 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 423 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_pre_dec, (yyvsp[(2) - (2)].expression), NULL, NULL);
@@ -3057,8 +3216,8 @@ yyreduce:
 
   case 41:
 
-/* Line 1455 of yacc.c  */
-#line 422 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 429 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression((yyvsp[(1) - (2)].n), (yyvsp[(2) - (2)].expression), NULL, NULL);
@@ -3068,36 +3227,36 @@ yyreduce:
 
   case 42:
 
-/* Line 1455 of yacc.c  */
-#line 431 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 438 "glsl_parser.ypp"
     { (yyval.n) = ast_plus; ;}
     break;
 
   case 43:
 
-/* Line 1455 of yacc.c  */
-#line 432 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 439 "glsl_parser.ypp"
     { (yyval.n) = ast_neg; ;}
     break;
 
   case 44:
 
-/* Line 1455 of yacc.c  */
-#line 433 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 440 "glsl_parser.ypp"
     { (yyval.n) = ast_logic_not; ;}
     break;
 
   case 45:
 
-/* Line 1455 of yacc.c  */
-#line 434 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 441 "glsl_parser.ypp"
     { (yyval.n) = ast_bit_not; ;}
     break;
 
   case 47:
 
-/* Line 1455 of yacc.c  */
-#line 440 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 447 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_mul, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3107,8 +3266,8 @@ yyreduce:
 
   case 48:
 
-/* Line 1455 of yacc.c  */
-#line 446 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 453 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_div, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3118,8 +3277,8 @@ yyreduce:
 
   case 49:
 
-/* Line 1455 of yacc.c  */
-#line 452 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 459 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_mod, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3129,8 +3288,8 @@ yyreduce:
 
   case 51:
 
-/* Line 1455 of yacc.c  */
-#line 462 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 469 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_add, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3140,8 +3299,8 @@ yyreduce:
 
   case 52:
 
-/* Line 1455 of yacc.c  */
-#line 468 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 475 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_sub, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3151,8 +3310,8 @@ yyreduce:
 
   case 54:
 
-/* Line 1455 of yacc.c  */
-#line 478 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 485 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_lshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3162,8 +3321,8 @@ yyreduce:
 
   case 55:
 
-/* Line 1455 of yacc.c  */
-#line 484 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 491 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_rshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3173,8 +3332,8 @@ yyreduce:
 
   case 57:
 
-/* Line 1455 of yacc.c  */
-#line 494 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 501 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_less, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3184,8 +3343,8 @@ yyreduce:
 
   case 58:
 
-/* Line 1455 of yacc.c  */
-#line 500 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 507 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_greater, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3195,8 +3354,8 @@ yyreduce:
 
   case 59:
 
-/* Line 1455 of yacc.c  */
-#line 506 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 513 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_lequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3206,8 +3365,8 @@ yyreduce:
 
   case 60:
 
-/* Line 1455 of yacc.c  */
-#line 512 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 519 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_gequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3217,8 +3376,8 @@ yyreduce:
 
   case 62:
 
-/* Line 1455 of yacc.c  */
-#line 522 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 529 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_equal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3228,8 +3387,8 @@ yyreduce:
 
   case 63:
 
-/* Line 1455 of yacc.c  */
-#line 528 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 535 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_nequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3239,8 +3398,8 @@ yyreduce:
 
   case 65:
 
-/* Line 1455 of yacc.c  */
-#line 538 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 545 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3250,8 +3409,8 @@ yyreduce:
 
   case 67:
 
-/* Line 1455 of yacc.c  */
-#line 548 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 555 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3261,8 +3420,8 @@ yyreduce:
 
   case 69:
 
-/* Line 1455 of yacc.c  */
-#line 558 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 565 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3272,8 +3431,8 @@ yyreduce:
 
   case 71:
 
-/* Line 1455 of yacc.c  */
-#line 568 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 575 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3283,8 +3442,8 @@ yyreduce:
 
   case 73:
 
-/* Line 1455 of yacc.c  */
-#line 578 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 585 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3294,8 +3453,8 @@ yyreduce:
 
   case 75:
 
-/* Line 1455 of yacc.c  */
-#line 588 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 595 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3305,8 +3464,8 @@ yyreduce:
 
   case 77:
 
-/* Line 1455 of yacc.c  */
-#line 598 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 605 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_conditional, (yyvsp[(1) - (5)].expression), (yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].expression));
@@ -3316,8 +3475,8 @@ yyreduce:
 
   case 79:
 
-/* Line 1455 of yacc.c  */
-#line 608 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 615 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression((yyvsp[(2) - (3)].n), (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL);
@@ -3327,85 +3486,85 @@ yyreduce:
 
   case 80:
 
-/* Line 1455 of yacc.c  */
-#line 616 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 623 "glsl_parser.ypp"
     { (yyval.n) = ast_assign; ;}
     break;
 
   case 81:
 
-/* Line 1455 of yacc.c  */
-#line 617 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 624 "glsl_parser.ypp"
     { (yyval.n) = ast_mul_assign; ;}
     break;
 
   case 82:
 
-/* Line 1455 of yacc.c  */
-#line 618 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 625 "glsl_parser.ypp"
     { (yyval.n) = ast_div_assign; ;}
     break;
 
   case 83:
 
-/* Line 1455 of yacc.c  */
-#line 619 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 626 "glsl_parser.ypp"
     { (yyval.n) = ast_mod_assign; ;}
     break;
 
   case 84:
 
-/* Line 1455 of yacc.c  */
-#line 620 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 627 "glsl_parser.ypp"
     { (yyval.n) = ast_add_assign; ;}
     break;
 
   case 85:
 
-/* Line 1455 of yacc.c  */
-#line 621 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 628 "glsl_parser.ypp"
     { (yyval.n) = ast_sub_assign; ;}
     break;
 
   case 86:
 
-/* Line 1455 of yacc.c  */
-#line 622 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 629 "glsl_parser.ypp"
     { (yyval.n) = ast_ls_assign; ;}
     break;
 
   case 87:
 
-/* Line 1455 of yacc.c  */
-#line 623 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 630 "glsl_parser.ypp"
     { (yyval.n) = ast_rs_assign; ;}
     break;
 
   case 88:
 
-/* Line 1455 of yacc.c  */
-#line 624 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 631 "glsl_parser.ypp"
     { (yyval.n) = ast_and_assign; ;}
     break;
 
   case 89:
 
-/* Line 1455 of yacc.c  */
-#line 625 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 632 "glsl_parser.ypp"
     { (yyval.n) = ast_xor_assign; ;}
     break;
 
   case 90:
 
-/* Line 1455 of yacc.c  */
-#line 626 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 633 "glsl_parser.ypp"
     { (yyval.n) = ast_or_assign; ;}
     break;
 
   case 91:
 
-/* Line 1455 of yacc.c  */
-#line 631 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 638 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (1)].expression);
        ;}
@@ -3413,8 +3572,8 @@ yyreduce:
 
   case 92:
 
-/* Line 1455 of yacc.c  */
-#line 635 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 642 "glsl_parser.ypp"
     {
           void *ctx = state;
           if ((yyvsp[(1) - (3)].expression)->oper != ast_sequence) {
@@ -3431,8 +3590,8 @@ yyreduce:
 
   case 94:
 
-/* Line 1455 of yacc.c  */
-#line 655 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 662 "glsl_parser.ypp"
     {
           (yyval.node) = (yyvsp[(1) - (2)].function);
        ;}
@@ -3440,8 +3599,8 @@ yyreduce:
 
   case 95:
 
-/* Line 1455 of yacc.c  */
-#line 659 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 666 "glsl_parser.ypp"
     {
           (yyval.node) = (yyvsp[(1) - (2)].declarator_list);
        ;}
@@ -3449,8 +3608,8 @@ yyreduce:
 
   case 96:
 
-/* Line 1455 of yacc.c  */
-#line 663 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 670 "glsl_parser.ypp"
     {
           if (((yyvsp[(3) - (4)].type_specifier)->type_specifier != ast_float)
               && ((yyvsp[(3) - (4)].type_specifier)->type_specifier != ast_int)) {
@@ -3465,8 +3624,8 @@ yyreduce:
 
   case 100:
 
-/* Line 1455 of yacc.c  */
-#line 686 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 693 "glsl_parser.ypp"
     {
           (yyval.function) = (yyvsp[(1) - (2)].function);
           (yyval.function)->parameters.push_tail(& (yyvsp[(2) - (2)].parameter_declarator)->link);
@@ -3475,8 +3634,8 @@ yyreduce:
 
   case 101:
 
-/* Line 1455 of yacc.c  */
-#line 691 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 698 "glsl_parser.ypp"
     {
           (yyval.function) = (yyvsp[(1) - (3)].function);
           (yyval.function)->parameters.push_tail(& (yyvsp[(3) - (3)].parameter_declarator)->link);
@@ -3485,8 +3644,8 @@ yyreduce:
 
   case 102:
 
-/* Line 1455 of yacc.c  */
-#line 699 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 706 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.function) = new(ctx) ast_function();
@@ -3498,8 +3657,8 @@ yyreduce:
 
   case 103:
 
-/* Line 1455 of yacc.c  */
-#line 710 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 717 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3513,8 +3672,8 @@ yyreduce:
 
   case 104:
 
-/* Line 1455 of yacc.c  */
-#line 720 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 727 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3530,8 +3689,8 @@ yyreduce:
 
   case 105:
 
-/* Line 1455 of yacc.c  */
-#line 735 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 742 "glsl_parser.ypp"
     {
           (yyvsp[(1) - (3)].type_qualifier).i |= (yyvsp[(2) - (3)].type_qualifier).i;
 
@@ -3542,8 +3701,8 @@ yyreduce:
 
   case 106:
 
-/* Line 1455 of yacc.c  */
-#line 742 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 749 "glsl_parser.ypp"
     {
           (yyval.parameter_declarator) = (yyvsp[(2) - (2)].parameter_declarator);
           (yyval.parameter_declarator)->type->qualifier = (yyvsp[(1) - (2)].type_qualifier).q;
@@ -3552,8 +3711,8 @@ yyreduce:
 
   case 107:
 
-/* Line 1455 of yacc.c  */
-#line 747 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 754 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyvsp[(1) - (3)].type_qualifier).i |= (yyvsp[(2) - (3)].type_qualifier).i;
@@ -3568,8 +3727,8 @@ yyreduce:
 
   case 108:
 
-/* Line 1455 of yacc.c  */
-#line 758 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 765 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3582,36 +3741,36 @@ yyreduce:
 
   case 109:
 
-/* Line 1455 of yacc.c  */
-#line 769 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 776 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; ;}
     break;
 
   case 110:
 
-/* Line 1455 of yacc.c  */
-#line 770 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 777 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.in = 1; ;}
     break;
 
   case 111:
 
-/* Line 1455 of yacc.c  */
-#line 771 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 778 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.out = 1; ;}
     break;
 
   case 112:
 
-/* Line 1455 of yacc.c  */
-#line 772 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 779 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.in = 1; (yyval.type_qualifier).q.out = 1; ;}
     break;
 
   case 115:
 
-/* Line 1455 of yacc.c  */
-#line 782 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 789 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (3)].identifier), false, NULL, NULL);
@@ -3624,8 +3783,8 @@ yyreduce:
 
   case 116:
 
-/* Line 1455 of yacc.c  */
-#line 791 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 798 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), true, NULL, NULL);
@@ -3638,8 +3797,8 @@ yyreduce:
 
   case 117:
 
-/* Line 1455 of yacc.c  */
-#line 800 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 807 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (6)].identifier), true, (yyvsp[(5) - (6)].expression), NULL);
@@ -3652,8 +3811,8 @@ yyreduce:
 
   case 118:
 
-/* Line 1455 of yacc.c  */
-#line 809 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 816 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (7)].identifier), true, NULL, (yyvsp[(7) - (7)].expression));
@@ -3666,8 +3825,8 @@ yyreduce:
 
   case 119:
 
-/* Line 1455 of yacc.c  */
-#line 818 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 825 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (8)].identifier), true, (yyvsp[(5) - (8)].expression), (yyvsp[(8) - (8)].expression));
@@ -3680,8 +3839,8 @@ yyreduce:
 
   case 120:
 
-/* Line 1455 of yacc.c  */
-#line 827 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 834 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), false, NULL, (yyvsp[(5) - (5)].expression));
@@ -3694,8 +3853,8 @@ yyreduce:
 
   case 121:
 
-/* Line 1455 of yacc.c  */
-#line 840 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 847 "glsl_parser.ypp"
     {
           void *ctx = state;
           if ((yyvsp[(1) - (1)].fully_specified_type)->specifier->type_specifier != ast_struct) {
@@ -3710,8 +3869,8 @@ yyreduce:
 
   case 122:
 
-/* Line 1455 of yacc.c  */
-#line 851 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 858 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL);
@@ -3724,8 +3883,8 @@ yyreduce:
 
   case 123:
 
-/* Line 1455 of yacc.c  */
-#line 860 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 867 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), true, NULL, NULL);
@@ -3738,8 +3897,8 @@ yyreduce:
 
   case 124:
 
-/* Line 1455 of yacc.c  */
-#line 869 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 876 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (5)].identifier), true, (yyvsp[(4) - (5)].expression), NULL);
@@ -3752,8 +3911,8 @@ yyreduce:
 
   case 125:
 
-/* Line 1455 of yacc.c  */
-#line 878 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 885 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (6)].identifier), true, NULL, (yyvsp[(6) - (6)].expression));
@@ -3766,8 +3925,8 @@ yyreduce:
 
   case 126:
 
-/* Line 1455 of yacc.c  */
-#line 887 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 894 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (7)].identifier), true, (yyvsp[(4) - (7)].expression), (yyvsp[(7) - (7)].expression));
@@ -3780,8 +3939,8 @@ yyreduce:
 
   case 127:
 
-/* Line 1455 of yacc.c  */
-#line 896 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 903 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
@@ -3794,8 +3953,8 @@ yyreduce:
 
   case 128:
 
-/* Line 1455 of yacc.c  */
-#line 905 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 912 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL);
@@ -3810,8 +3969,8 @@ yyreduce:
 
   case 129:
 
-/* Line 1455 of yacc.c  */
-#line 919 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 926 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
@@ -3822,8 +3981,8 @@ yyreduce:
 
   case 130:
 
-/* Line 1455 of yacc.c  */
-#line 926 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 933 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
@@ -3835,15 +3994,15 @@ yyreduce:
 
   case 131:
 
-/* Line 1455 of yacc.c  */
-#line 936 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 943 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; ;}
     break;
 
   case 133:
 
-/* Line 1455 of yacc.c  */
-#line 942 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 949 "glsl_parser.ypp"
     {
          (yyval.type_qualifier) = (yyvsp[(3) - (4)].type_qualifier);
        ;}
@@ -3851,8 +4010,8 @@ yyreduce:
 
   case 135:
 
-/* Line 1455 of yacc.c  */
-#line 950 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 957 "glsl_parser.ypp"
     {
           (yyval.type_qualifier).i = (yyvsp[(1) - (3)].type_qualifier).i | (yyvsp[(3) - (3)].type_qualifier).i;
        ;}
@@ -3860,8 +4019,8 @@ yyreduce:
 
   case 136:
 
-/* Line 1455 of yacc.c  */
-#line 957 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 964 "glsl_parser.ypp"
     {
           (yyval.type_qualifier).i = 0;
 
@@ -3896,36 +4055,36 @@ yyreduce:
 
   case 137:
 
-/* Line 1455 of yacc.c  */
-#line 990 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 997 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.smooth = 1; ;}
     break;
 
   case 138:
 
-/* Line 1455 of yacc.c  */
-#line 991 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 998 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.flat = 1; ;}
     break;
 
   case 139:
 
-/* Line 1455 of yacc.c  */
-#line 992 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 999 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.noperspective = 1; ;}
     break;
 
   case 140:
 
-/* Line 1455 of yacc.c  */
-#line 996 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1003 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.constant = 1; ;}
     break;
 
   case 142:
 
-/* Line 1455 of yacc.c  */
-#line 1002 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1009 "glsl_parser.ypp"
     {
           (yyval.type_qualifier).i = (yyvsp[(1) - (2)].type_qualifier).i | (yyvsp[(2) - (2)].type_qualifier).i;
        ;}
@@ -3933,8 +4092,8 @@ yyreduce:
 
   case 143:
 
-/* Line 1455 of yacc.c  */
-#line 1006 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1013 "glsl_parser.ypp"
     {
           (yyval.type_qualifier) = (yyvsp[(2) - (2)].type_qualifier);
           (yyval.type_qualifier).q.invariant = 1;
@@ -3943,71 +4102,71 @@ yyreduce:
 
   case 144:
 
-/* Line 1455 of yacc.c  */
-#line 1013 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1020 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.constant = 1; ;}
     break;
 
   case 145:
 
-/* Line 1455 of yacc.c  */
-#line 1014 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1021 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.attribute = 1; ;}
     break;
 
   case 146:
 
-/* Line 1455 of yacc.c  */
-#line 1015 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1022 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = (yyvsp[(1) - (2)].type_qualifier).i; (yyval.type_qualifier).q.varying = 1; ;}
     break;
 
   case 147:
 
-/* Line 1455 of yacc.c  */
-#line 1016 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1023 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.centroid = 1; (yyval.type_qualifier).q.varying = 1; ;}
     break;
 
   case 148:
 
-/* Line 1455 of yacc.c  */
-#line 1017 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1024 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.in = 1; ;}
     break;
 
   case 149:
 
-/* Line 1455 of yacc.c  */
-#line 1018 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1025 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.out = 1; ;}
     break;
 
   case 150:
 
-/* Line 1455 of yacc.c  */
-#line 1019 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1026 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.centroid = 1; (yyval.type_qualifier).q.in = 1; ;}
     break;
 
   case 151:
 
-/* Line 1455 of yacc.c  */
-#line 1020 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1027 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.centroid = 1; (yyval.type_qualifier).q.out = 1; ;}
     break;
 
   case 152:
 
-/* Line 1455 of yacc.c  */
-#line 1021 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1028 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.uniform = 1; ;}
     break;
 
   case 154:
 
-/* Line 1455 of yacc.c  */
-#line 1027 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1034 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(2) - (2)].type_specifier);
           (yyval.type_specifier)->precision = (yyvsp[(1) - (2)].n);
@@ -4016,8 +4175,8 @@ yyreduce:
 
   case 156:
 
-/* Line 1455 of yacc.c  */
-#line 1036 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1043 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(1) - (3)].type_specifier);
           (yyval.type_specifier)->is_array = true;
@@ -4027,8 +4186,8 @@ yyreduce:
 
   case 157:
 
-/* Line 1455 of yacc.c  */
-#line 1042 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1049 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(1) - (4)].type_specifier);
           (yyval.type_specifier)->is_array = true;
@@ -4038,8 +4197,8 @@ yyreduce:
 
   case 158:
 
-/* Line 1455 of yacc.c  */
-#line 1051 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1058 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].n));
@@ -4049,8 +4208,8 @@ yyreduce:
 
   case 159:
 
-/* Line 1455 of yacc.c  */
-#line 1057 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1064 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].struct_specifier));
@@ -4060,8 +4219,8 @@ yyreduce:
 
   case 160:
 
-/* Line 1455 of yacc.c  */
-#line 1063 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1070 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].identifier));
@@ -4071,386 +4230,386 @@ yyreduce:
 
   case 161:
 
-/* Line 1455 of yacc.c  */
-#line 1071 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1078 "glsl_parser.ypp"
     { (yyval.n) = ast_void; ;}
     break;
 
   case 162:
 
-/* Line 1455 of yacc.c  */
-#line 1072 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1079 "glsl_parser.ypp"
     { (yyval.n) = ast_float; ;}
     break;
 
   case 163:
 
-/* Line 1455 of yacc.c  */
-#line 1073 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1080 "glsl_parser.ypp"
     { (yyval.n) = ast_int; ;}
     break;
 
   case 164:
 
-/* Line 1455 of yacc.c  */
-#line 1074 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1081 "glsl_parser.ypp"
     { (yyval.n) = ast_uint; ;}
     break;
 
   case 165:
 
-/* Line 1455 of yacc.c  */
-#line 1075 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1082 "glsl_parser.ypp"
     { (yyval.n) = ast_bool; ;}
     break;
 
   case 166:
 
-/* Line 1455 of yacc.c  */
-#line 1076 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1083 "glsl_parser.ypp"
     { (yyval.n) = ast_vec2; ;}
     break;
 
   case 167:
 
-/* Line 1455 of yacc.c  */
-#line 1077 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1084 "glsl_parser.ypp"
     { (yyval.n) = ast_vec3; ;}
     break;
 
   case 168:
 
-/* Line 1455 of yacc.c  */
-#line 1078 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1085 "glsl_parser.ypp"
     { (yyval.n) = ast_vec4; ;}
     break;
 
   case 169:
 
-/* Line 1455 of yacc.c  */
-#line 1079 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1086 "glsl_parser.ypp"
     { (yyval.n) = ast_bvec2; ;}
     break;
 
   case 170:
 
-/* Line 1455 of yacc.c  */
-#line 1080 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1087 "glsl_parser.ypp"
     { (yyval.n) = ast_bvec3; ;}
     break;
 
   case 171:
 
-/* Line 1455 of yacc.c  */
-#line 1081 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1088 "glsl_parser.ypp"
     { (yyval.n) = ast_bvec4; ;}
     break;
 
   case 172:
 
-/* Line 1455 of yacc.c  */
-#line 1082 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1089 "glsl_parser.ypp"
     { (yyval.n) = ast_ivec2; ;}
     break;
 
   case 173:
 
-/* Line 1455 of yacc.c  */
-#line 1083 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1090 "glsl_parser.ypp"
     { (yyval.n) = ast_ivec3; ;}
     break;
 
   case 174:
 
-/* Line 1455 of yacc.c  */
-#line 1084 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1091 "glsl_parser.ypp"
     { (yyval.n) = ast_ivec4; ;}
     break;
 
   case 175:
 
-/* Line 1455 of yacc.c  */
-#line 1085 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1092 "glsl_parser.ypp"
     { (yyval.n) = ast_uvec2; ;}
     break;
 
   case 176:
 
-/* Line 1455 of yacc.c  */
-#line 1086 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1093 "glsl_parser.ypp"
     { (yyval.n) = ast_uvec3; ;}
     break;
 
   case 177:
 
-/* Line 1455 of yacc.c  */
-#line 1087 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1094 "glsl_parser.ypp"
     { (yyval.n) = ast_uvec4; ;}
     break;
 
   case 178:
 
-/* Line 1455 of yacc.c  */
-#line 1088 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1095 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2; ;}
     break;
 
   case 179:
 
-/* Line 1455 of yacc.c  */
-#line 1089 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1096 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3; ;}
     break;
 
   case 180:
 
-/* Line 1455 of yacc.c  */
-#line 1090 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1097 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4; ;}
     break;
 
   case 181:
 
-/* Line 1455 of yacc.c  */
-#line 1091 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1098 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2; ;}
     break;
 
   case 182:
 
-/* Line 1455 of yacc.c  */
-#line 1092 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1099 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2x3; ;}
     break;
 
   case 183:
 
-/* Line 1455 of yacc.c  */
-#line 1093 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1100 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2x4; ;}
     break;
 
   case 184:
 
-/* Line 1455 of yacc.c  */
-#line 1094 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1101 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3x2; ;}
     break;
 
   case 185:
 
-/* Line 1455 of yacc.c  */
-#line 1095 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1102 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3; ;}
     break;
 
   case 186:
 
-/* Line 1455 of yacc.c  */
-#line 1096 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1103 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3x4; ;}
     break;
 
   case 187:
 
-/* Line 1455 of yacc.c  */
-#line 1097 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1104 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4x2; ;}
     break;
 
   case 188:
 
-/* Line 1455 of yacc.c  */
-#line 1098 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1105 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4x3; ;}
     break;
 
   case 189:
 
-/* Line 1455 of yacc.c  */
-#line 1099 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1106 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4; ;}
     break;
 
   case 190:
 
-/* Line 1455 of yacc.c  */
-#line 1100 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1107 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1d; ;}
     break;
 
   case 191:
 
-/* Line 1455 of yacc.c  */
-#line 1101 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1108 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2d; ;}
     break;
 
   case 192:
 
-/* Line 1455 of yacc.c  */
-#line 1102 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1109 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2drect; ;}
     break;
 
   case 193:
 
-/* Line 1455 of yacc.c  */
-#line 1103 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1110 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler3d; ;}
     break;
 
   case 194:
 
-/* Line 1455 of yacc.c  */
-#line 1104 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1111 "glsl_parser.ypp"
     { (yyval.n) = ast_samplercube; ;}
     break;
 
   case 195:
 
-/* Line 1455 of yacc.c  */
-#line 1105 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1112 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1dshadow; ;}
     break;
 
   case 196:
 
-/* Line 1455 of yacc.c  */
-#line 1106 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1113 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2dshadow; ;}
     break;
 
   case 197:
 
-/* Line 1455 of yacc.c  */
-#line 1107 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1114 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2drectshadow; ;}
     break;
 
   case 198:
 
-/* Line 1455 of yacc.c  */
-#line 1108 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1115 "glsl_parser.ypp"
     { (yyval.n) = ast_samplercubeshadow; ;}
     break;
 
   case 199:
 
-/* Line 1455 of yacc.c  */
-#line 1109 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1116 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1darray; ;}
     break;
 
   case 200:
 
-/* Line 1455 of yacc.c  */
-#line 1110 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1117 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2darray; ;}
     break;
 
   case 201:
 
-/* Line 1455 of yacc.c  */
-#line 1111 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1118 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1darrayshadow; ;}
     break;
 
   case 202:
 
-/* Line 1455 of yacc.c  */
-#line 1112 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1119 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2darrayshadow; ;}
     break;
 
   case 203:
 
-/* Line 1455 of yacc.c  */
-#line 1113 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1120 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler1d; ;}
     break;
 
   case 204:
 
-/* Line 1455 of yacc.c  */
-#line 1114 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1121 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler2d; ;}
     break;
 
   case 205:
 
-/* Line 1455 of yacc.c  */
-#line 1115 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1122 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler3d; ;}
     break;
 
   case 206:
 
-/* Line 1455 of yacc.c  */
-#line 1116 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1123 "glsl_parser.ypp"
     { (yyval.n) = ast_isamplercube; ;}
     break;
 
   case 207:
 
-/* Line 1455 of yacc.c  */
-#line 1117 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1124 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler1darray; ;}
     break;
 
   case 208:
 
-/* Line 1455 of yacc.c  */
-#line 1118 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1125 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler2darray; ;}
     break;
 
   case 209:
 
-/* Line 1455 of yacc.c  */
-#line 1119 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1126 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler1d; ;}
     break;
 
   case 210:
 
-/* Line 1455 of yacc.c  */
-#line 1120 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1127 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler2d; ;}
     break;
 
   case 211:
 
-/* Line 1455 of yacc.c  */
-#line 1121 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1128 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler3d; ;}
     break;
 
   case 212:
 
-/* Line 1455 of yacc.c  */
-#line 1122 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1129 "glsl_parser.ypp"
     { (yyval.n) = ast_usamplercube; ;}
     break;
 
   case 213:
 
-/* Line 1455 of yacc.c  */
-#line 1123 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1130 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler1darray; ;}
     break;
 
   case 214:
 
-/* Line 1455 of yacc.c  */
-#line 1124 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1131 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler2darray; ;}
     break;
 
   case 215:
 
-/* Line 1455 of yacc.c  */
-#line 1128 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1135 "glsl_parser.ypp"
     {
                           if (state->language_version < 130)
                              _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4466,8 +4625,8 @@ yyreduce:
 
   case 216:
 
-/* Line 1455 of yacc.c  */
-#line 1139 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1146 "glsl_parser.ypp"
     {
                           if (state->language_version < 130)
                              _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4483,8 +4642,8 @@ yyreduce:
 
   case 217:
 
-/* Line 1455 of yacc.c  */
-#line 1150 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1157 "glsl_parser.ypp"
     {
                           if (state->language_version < 130)
                              _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4500,8 +4659,8 @@ yyreduce:
 
   case 218:
 
-/* Line 1455 of yacc.c  */
-#line 1165 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1172 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.struct_specifier) = new(ctx) ast_struct_specifier((yyvsp[(2) - (5)].identifier), (yyvsp[(4) - (5)].node));
@@ -4511,8 +4670,8 @@ yyreduce:
 
   case 219:
 
-/* Line 1455 of yacc.c  */
-#line 1171 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1178 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.struct_specifier) = new(ctx) ast_struct_specifier(NULL, (yyvsp[(3) - (4)].node));
@@ -4522,8 +4681,8 @@ yyreduce:
 
   case 220:
 
-/* Line 1455 of yacc.c  */
-#line 1180 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1187 "glsl_parser.ypp"
     {
           (yyval.node) = (struct ast_node *) (yyvsp[(1) - (1)].declarator_list);
           (yyvsp[(1) - (1)].declarator_list)->link.self_link();
@@ -4532,8 +4691,8 @@ yyreduce:
 
   case 221:
 
-/* Line 1455 of yacc.c  */
-#line 1185 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1192 "glsl_parser.ypp"
     {
           (yyval.node) = (struct ast_node *) (yyvsp[(1) - (2)].node);
           (yyval.node)->link.insert_before(& (yyvsp[(2) - (2)].declarator_list)->link);
@@ -4542,8 +4701,8 @@ yyreduce:
 
   case 222:
 
-/* Line 1455 of yacc.c  */
-#line 1193 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1200 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_fully_specified_type *type = new(ctx) ast_fully_specified_type();
@@ -4559,8 +4718,8 @@ yyreduce:
 
   case 223:
 
-/* Line 1455 of yacc.c  */
-#line 1208 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1215 "glsl_parser.ypp"
     {
           (yyval.declaration) = (yyvsp[(1) - (1)].declaration);
           (yyvsp[(1) - (1)].declaration)->link.self_link();
@@ -4569,8 +4728,8 @@ yyreduce:
 
   case 224:
 
-/* Line 1455 of yacc.c  */
-#line 1213 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1220 "glsl_parser.ypp"
     {
           (yyval.declaration) = (yyvsp[(1) - (3)].declaration);
           (yyval.declaration)->link.insert_before(& (yyvsp[(3) - (3)].declaration)->link);
@@ -4579,8 +4738,8 @@ yyreduce:
 
   case 225:
 
-/* Line 1455 of yacc.c  */
-#line 1221 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1228 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (1)].identifier), false, NULL, NULL);
@@ -4590,8 +4749,8 @@ yyreduce:
 
   case 226:
 
-/* Line 1455 of yacc.c  */
-#line 1227 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1234 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (4)].identifier), true, (yyvsp[(3) - (4)].expression), NULL);
@@ -4601,29 +4760,29 @@ yyreduce:
 
   case 231:
 
-/* Line 1455 of yacc.c  */
-#line 1250 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1257 "glsl_parser.ypp"
     { (yyval.node) = (struct ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
     break;
 
   case 237:
 
-/* Line 1455 of yacc.c  */
-#line 1262 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1269 "glsl_parser.ypp"
     { (yyval.node) = NULL; ;}
     break;
 
   case 238:
 
-/* Line 1455 of yacc.c  */
-#line 1263 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1270 "glsl_parser.ypp"
     { (yyval.node) = NULL; ;}
     break;
 
   case 241:
 
-/* Line 1455 of yacc.c  */
-#line 1270 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1277 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(true, NULL);
@@ -4633,8 +4792,8 @@ yyreduce:
 
   case 242:
 
-/* Line 1455 of yacc.c  */
-#line 1276 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1283 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[(2) - (3)].node));
@@ -4644,15 +4803,15 @@ yyreduce:
 
   case 243:
 
-/* Line 1455 of yacc.c  */
-#line 1284 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1291 "glsl_parser.ypp"
     { (yyval.node) = (struct ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
     break;
 
   case 245:
 
-/* Line 1455 of yacc.c  */
-#line 1290 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1297 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(false, NULL);
@@ -4662,8 +4821,8 @@ yyreduce:
 
   case 246:
 
-/* Line 1455 of yacc.c  */
-#line 1296 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1303 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(false, (yyvsp[(2) - (3)].node));
@@ -4673,8 +4832,8 @@ yyreduce:
 
   case 247:
 
-/* Line 1455 of yacc.c  */
-#line 1305 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1312 "glsl_parser.ypp"
     {
           if ((yyvsp[(1) - (1)].node) == NULL) {
              _mesa_glsl_error(& (yylsp[(1) - (1)]), state, "<nil> statement\n");
@@ -4688,8 +4847,8 @@ yyreduce:
 
   case 248:
 
-/* Line 1455 of yacc.c  */
-#line 1315 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1322 "glsl_parser.ypp"
     {
           if ((yyvsp[(2) - (2)].node) == NULL) {
              _mesa_glsl_error(& (yylsp[(2) - (2)]), state, "<nil> statement\n");
@@ -4702,8 +4861,8 @@ yyreduce:
 
   case 249:
 
-/* Line 1455 of yacc.c  */
-#line 1327 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1334 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_expression_statement(NULL);
@@ -4713,8 +4872,8 @@ yyreduce:
 
   case 250:
 
-/* Line 1455 of yacc.c  */
-#line 1333 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1340 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_expression_statement((yyvsp[(1) - (2)].expression));
@@ -4724,8 +4883,8 @@ yyreduce:
 
   case 251:
 
-/* Line 1455 of yacc.c  */
-#line 1342 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1349 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_selection_statement((yyvsp[(3) - (7)].expression), (yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node));
@@ -4735,8 +4894,8 @@ yyreduce:
 
   case 252:
 
-/* Line 1455 of yacc.c  */
-#line 1351 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1358 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_selection_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].node), NULL);
@@ -4746,8 +4905,8 @@ yyreduce:
 
   case 253:
 
-/* Line 1455 of yacc.c  */
-#line 1357 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1364 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_selection_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].node), NULL);
@@ -4757,8 +4916,8 @@ yyreduce:
 
   case 254:
 
-/* Line 1455 of yacc.c  */
-#line 1363 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1370 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_selection_statement((yyvsp[(3) - (7)].expression), (yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node));
@@ -4768,8 +4927,8 @@ yyreduce:
 
   case 255:
 
-/* Line 1455 of yacc.c  */
-#line 1372 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1379 "glsl_parser.ypp"
     {
           (yyval.node) = (struct ast_node *) (yyvsp[(1) - (1)].expression);
        ;}
@@ -4777,8 +4936,8 @@ yyreduce:
 
   case 256:
 
-/* Line 1455 of yacc.c  */
-#line 1376 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1383 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
@@ -4793,8 +4952,8 @@ yyreduce:
 
   case 260:
 
-/* Line 1455 of yacc.c  */
-#line 1399 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1406 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_while,
@@ -4805,8 +4964,8 @@ yyreduce:
 
   case 261:
 
-/* Line 1455 of yacc.c  */
-#line 1406 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1413 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_do_while,
@@ -4817,8 +4976,8 @@ yyreduce:
 
   case 262:
 
-/* Line 1455 of yacc.c  */
-#line 1413 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1420 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_for,
@@ -4829,8 +4988,8 @@ yyreduce:
 
   case 266:
 
-/* Line 1455 of yacc.c  */
-#line 1429 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1436 "glsl_parser.ypp"
     {
           (yyval.node) = NULL;
        ;}
@@ -4838,8 +4997,8 @@ yyreduce:
 
   case 267:
 
-/* Line 1455 of yacc.c  */
-#line 1436 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1443 "glsl_parser.ypp"
     {
           (yyval.for_rest_statement).cond = (yyvsp[(1) - (2)].node);
           (yyval.for_rest_statement).rest = NULL;
@@ -4848,8 +5007,8 @@ yyreduce:
 
   case 268:
 
-/* Line 1455 of yacc.c  */
-#line 1441 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1448 "glsl_parser.ypp"
     {
           (yyval.for_rest_statement).cond = (yyvsp[(1) - (3)].node);
           (yyval.for_rest_statement).rest = (yyvsp[(3) - (3)].expression);
@@ -4858,8 +5017,8 @@ yyreduce:
 
   case 269:
 
-/* Line 1455 of yacc.c  */
-#line 1450 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1457 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_continue, NULL);
@@ -4869,8 +5028,8 @@ yyreduce:
 
   case 270:
 
-/* Line 1455 of yacc.c  */
-#line 1456 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1463 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_break, NULL);
@@ -4880,8 +5039,8 @@ yyreduce:
 
   case 271:
 
-/* Line 1455 of yacc.c  */
-#line 1462 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1469 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, NULL);
@@ -4891,8 +5050,8 @@ yyreduce:
 
   case 272:
 
-/* Line 1455 of yacc.c  */
-#line 1468 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1475 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, (yyvsp[(2) - (3)].expression));
@@ -4902,8 +5061,8 @@ yyreduce:
 
   case 273:
 
-/* Line 1455 of yacc.c  */
-#line 1474 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1481 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_discard, NULL);
@@ -4913,22 +5072,22 @@ yyreduce:
 
   case 274:
 
-/* Line 1455 of yacc.c  */
-#line 1482 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1489 "glsl_parser.ypp"
     { (yyval.node) = (yyvsp[(1) - (1)].function_definition); ;}
     break;
 
   case 275:
 
-/* Line 1455 of yacc.c  */
-#line 1483 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1490 "glsl_parser.ypp"
     { (yyval.node) = (yyvsp[(1) - (1)].node); ;}
     break;
 
   case 276:
 
-/* Line 1455 of yacc.c  */
-#line 1488 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1495 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.function_definition) = new(ctx) ast_function_definition();
@@ -4940,8 +5099,8 @@ yyreduce:
 
 
 
-/* Line 1455 of yacc.c  */
-#line 4945 "glsl_parser.cpp"
+/* Line 1464 of yacc.c  */
+#line 5104 "glsl_parser.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
index 9c4e12fd7ef2fddc43b9c5ce263e993521f7bed7..367b46f49e5043d70a4474fa894641e8b580052e 100644 (file)
@@ -1,10 +1,9 @@
-
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* A Bison parser, made by GNU Bison 2.4.2.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software
+   Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
      LOWP = 362,
      MEDIUMP = 363,
      HIGHP = 364,
-     PRECISION = 365,
-     VERSION = 366,
-     EXTENSION = 367,
-     LINE = 368,
-     PRAGMA = 369,
-     COLON = 370,
-     EOL = 371,
-     INTERFACE = 372,
-     OUTPUT = 373,
-     LAYOUT_TOK = 374,
-     ASM = 375,
-     CLASS = 376,
-     UNION = 377,
-     ENUM = 378,
-     TYPEDEF = 379,
-     TEMPLATE = 380,
-     THIS = 381,
-     PACKED = 382,
-     GOTO = 383,
-     INLINE_TOK = 384,
-     NOINLINE = 385,
-     VOLATILE = 386,
-     PUBLIC_TOK = 387,
-     STATIC = 388,
-     EXTERN = 389,
-     EXTERNAL = 390,
-     LONG = 391,
-     SHORT = 392,
-     DOUBLE = 393,
-     HALF = 394,
-     FIXED = 395,
-     UNSIGNED = 396,
-     INPUT = 397,
-     OUPTUT = 398,
-     HVEC2 = 399,
-     HVEC3 = 400,
-     HVEC4 = 401,
-     DVEC2 = 402,
-     DVEC3 = 403,
-     DVEC4 = 404,
-     FVEC2 = 405,
-     FVEC3 = 406,
-     FVEC4 = 407,
-     SAMPLER2DRECT = 408,
-     SAMPLER3DRECT = 409,
-     SAMPLER2DRECTSHADOW = 410,
-     SIZEOF = 411,
-     CAST = 412,
-     NAMESPACE = 413,
-     USING = 414
+     SUPERP = 365,
+     PRECISION = 366,
+     VERSION = 367,
+     EXTENSION = 368,
+     LINE = 369,
+     PRAGMA = 370,
+     COLON = 371,
+     EOL = 372,
+     INTERFACE = 373,
+     OUTPUT = 374,
+     LAYOUT_TOK = 375,
+     ASM = 376,
+     CLASS = 377,
+     UNION = 378,
+     ENUM = 379,
+     TYPEDEF = 380,
+     TEMPLATE = 381,
+     THIS = 382,
+     PACKED = 383,
+     GOTO = 384,
+     INLINE_TOK = 385,
+     NOINLINE = 386,
+     VOLATILE = 387,
+     PUBLIC_TOK = 388,
+     STATIC = 389,
+     EXTERN = 390,
+     EXTERNAL = 391,
+     LONG = 392,
+     SHORT = 393,
+     DOUBLE = 394,
+     HALF = 395,
+     FIXED = 396,
+     UNSIGNED = 397,
+     INPUT = 398,
+     OUPTUT = 399,
+     HVEC2 = 400,
+     HVEC3 = 401,
+     HVEC4 = 402,
+     DVEC2 = 403,
+     DVEC3 = 404,
+     DVEC4 = 405,
+     FVEC2 = 406,
+     FVEC3 = 407,
+     FVEC4 = 408,
+     SAMPLER2DRECT = 409,
+     SAMPLER3DRECT = 410,
+     SAMPLER2DRECTSHADOW = 411,
+     SIZEOF = 412,
+     CAST = 413,
+     NAMESPACE = 414,
+     USING = 415,
+     COMMON = 416,
+     PARTITION = 417,
+     ACTIVE = 418,
+     SAMPLERBUFFER = 419,
+     FILTER = 420,
+     IMAGE1D = 421,
+     IMAGE2D = 422,
+     IMAGE3D = 423,
+     IMAGECUBE = 424,
+     IMAGE1DARRAY = 425,
+     IMAGE2DARRAY = 426,
+     IIMAGE1D = 427,
+     IIMAGE2D = 428,
+     IIMAGE3D = 429,
+     IIMAGECUBE = 430,
+     IIMAGE1DARRAY = 431,
+     IIMAGE2DARRAY = 432,
+     UIMAGE1D = 433,
+     UIMAGE2D = 434,
+     UIMAGE3D = 435,
+     UIMAGECUBE = 436,
+     UIMAGE1DARRAY = 437,
+     UIMAGE2DARRAY = 438,
+     IMAGE1DSHADOW = 439,
+     IMAGE2DSHADOW = 440,
+     IMAGEBUFFER = 441,
+     IIMAGEBUFFER = 442,
+     UIMAGEBUFFER = 443,
+     ROW_MAJOR = 444
    };
 #endif
 
 typedef union YYSTYPE
 {
 
-/* Line 1676 of yacc.c  */
+/* Line 1685 of yacc.c  */
 #line 45 "glsl_parser.ypp"
 
    int n;
@@ -236,8 +265,8 @@ typedef union YYSTYPE
 
 
 
-/* Line 1676 of yacc.c  */
-#line 241 "glsl_parser.h"
+/* Line 1685 of yacc.c  */
+#line 270 "glsl_parser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index 7cabefbd34faad701e85ed4f4365351cf832b964..493b74fb69238f714014df3af1d914d07869e34a 100644 (file)
@@ -94,7 +94,7 @@
 %token MOD_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN OR_ASSIGN
 %token SUB_ASSIGN
 %token INVARIANT
-%token LOWP MEDIUMP HIGHP PRECISION
+%token LOWP MEDIUMP HIGHP SUPERP PRECISION
 
 %token VERSION EXTENSION LINE PRAGMA COLON EOL INTERFACE OUTPUT
 %token LAYOUT_TOK
 %token SAMPLER2DRECT SAMPLER3DRECT SAMPLER2DRECTSHADOW
 %token SIZEOF CAST NAMESPACE USING
 
+%token COMMON PARTITION ACTIVE SAMPLERBUFFER FILTER
+%token  IMAGE1D  IMAGE2D  IMAGE3D  IMAGECUBE  IMAGE1DARRAY  IMAGE2DARRAY
+%token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGECUBE IIMAGE1DARRAY IIMAGE2DARRAY
+%token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGECUBE UIMAGE1DARRAY UIMAGE2DARRAY
+%token IMAGE1DSHADOW IMAGE2DSHADOW IMAGEBUFFER IIMAGEBUFFER UIMAGEBUFFER
+%token ROW_MAJOR
+
 %type <identifier> variable_identifier
 %type <node> statement
 %type <node> statement_list