glsl2: Parser support for GL_ARB_fragment_coord_conventions
authorIan Romanick <ian.d.romanick@intel.com>
Thu, 1 Jul 2010 00:30:03 +0000 (17:30 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 28 Jul 2010 21:14:38 +0000 (14:14 -0700)
src/glsl/ast.h
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
src/glsl/glsl_parser_extras.cpp
src/glsl/glsl_parser_extras.h

index adb5fb11d471c495645336f441b09ef0152c8f93..655054ff6fae404e6645091ecf3eb658bcffb8aa 100644 (file)
@@ -302,6 +302,12 @@ struct ast_type_qualifier {
    unsigned smooth:1;
    unsigned flat:1;
    unsigned noperspective:1;
+
+   /** \name Layout qualifiers for GL_ARB_fragment_coord_conventions */
+   /*@{*/
+   unsigned origin_upper_left:1;
+   unsigned pixel_center_integer:1;
+   /*@}*/
 };
 
 class ast_struct_specifier : public ast_node {
index e3e89195b2c675ddf2fcffd99e3ac92310903a03..ecb4b857bbd75108c151ad572060dad320023ca7 100644 (file)
@@ -358,8 +358,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 145
-#define YY_END_OF_BUFFER 146
+#define YY_NUM_RULES 146
+#define YY_END_OF_BUFFER 147
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -367,65 +367,66 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[519] =
+static yyconst flex_int16_t yy_accept[524] =
     {   0,
-        0,    0,    9,    9,  146,  144,    1,   14,  144,  144,
-      144,  144,  144,  144,  144,  144,   89,   87,  144,  144,
-      144,  143,  144,  143,  143,  143,  143,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-      143,  143,  143,  144,    1,  144,   84,  145,    9,   13,
-      145,   12,   10,   11,    1,   73,   80,   74,   83,   77,
-       68,   79,   69,   86,   91,   78,   92,   89,    0,    0,
-        0,   87,    0,   70,   72,   71,    0,  143,   76,  143,
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-       22,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-
-      143,  143,  143,  143,   26,   50,  143,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-      143,  143,  143,   85,   75,    1,    0,    0,    2,    0,
-        0,    0,    0,    9,    8,   12,   11,    0,   91,   90,
-        0,   92,    0,   93,   88,   81,   82,   96,  143,  143,
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,  143,   25,  143,  143,
-      143,  143,  143,  143,  143,  143,   19,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,   51,  143,  143,  143,
-
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-        0,    0,    0,    0,    8,    0,   91,    0,   90,    0,
-       92,   93,  143,   17,  143,  143,  136,  143,  143,  143,
-      143,  143,  143,  143,  143,   24,   99,  143,  143,  143,
-       57,  143,  143,  104,  118,  143,  143,  143,  143,  143,
-      143,  143,  143,  115,  139,   38,   39,   40,  143,  143,
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-      143,  143,  143,  143,  143,  102,   94,  143,  143,  143,
-      143,  143,  143,   35,   36,   37,   67,  143,  143,    0,
-
-        0,    0,    0,    0,   90,  143,   20,   29,   30,   31,
-      143,   97,   16,  143,  143,  143,  143,  126,  127,  128,
-      143,   95,  119,   18,  129,  130,  131,  141,  123,  124,
-      125,  143,   52,  121,  143,  143,   32,   33,   34,  143,
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-      143,  143,  116,  143,  143,  143,  143,  143,  143,  143,
-      143,   98,  143,  138,  143,  143,   23,    0,    0,    0,
-        0,  143,  143,  143,  143,  143,  117,  112,  107,  143,
-      143,   41,   42,   43,   44,   45,   46,   47,   48,   49,
-      143,  143,  143,  143,  122,  103,  143,  110,   28,  143,
-
-      135,   58,  111,   66,  105,  143,  143,  143,  143,  143,
-      143,    0,    0,    0,    0,  143,  143,  143,  106,   27,
-      143,  143,  143,  140,  143,  143,  143,  143,  143,  143,
-      100,   53,  143,   54,  143,    0,    0,    0,    7,    0,
-      143,   55,   21,  113,  143,  143,  143,  108,  143,  143,
-      143,  143,  143,  143,  101,  120,  109,    0,    0,    6,
-        0,    0,    0,    3,   15,  114,   56,  137,  143,  142,
-       60,   61,   62,  143,    0,    0,    0,    0,  143,  143,
-      143,  143,  143,  143,    4,    0,    5,    0,    0,    0,
-      143,  143,  143,  143,  143,   63,    0,  143,  143,  143,
-
-      143,  143,   59,  143,  132,  143,  133,  143,  143,  143,
-       64,  143,   65,  143,  143,  143,  134,    0
+        0,    0,    9,    9,  147,  145,    1,   14,  145,  145,
+      145,  145,  145,  145,  145,  145,   90,   88,  145,  145,
+      145,  144,  145,  144,  144,  144,  144,  144,  144,  144,
+      144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
+      144,  144,  144,  145,    1,  145,   85,  146,    9,   13,
+      146,   12,   10,   11,    1,   74,   81,   75,   84,   78,
+       69,   80,   70,   87,   92,   79,   93,   90,    0,    0,
+        0,   88,    0,   71,   73,   72,    0,  144,   77,  144,
+      144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
+       22,  144,  144,  144,  144,  144,  144,  144,  144,  144,
+
+      144,  144,  144,  144,   26,   50,  144,  144,  144,  144,
+      144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
+      144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
+      144,  144,  144,  144,   86,   76,    1,    0,    0,    2,
+        0,    0,    0,    0,    9,    8,   12,   11,    0,   92,
+       91,    0,   93,    0,   94,   89,   82,   83,   97,  144,
+      144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
+      144,  144,  144,  144,  144,  144,  144,  144,   25,  144,
+      144,  144,  144,  144,  144,  144,  144,   19,  144,  144,
+      144,  144,  144,  144,  144,  144,  144,  144,   51,  144,
+
+      144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
+      144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
+      144,  144,    0,    0,    0,    0,    8,    0,   92,    0,
+       91,    0,   93,   94,  144,   17,  144,  144,  137,  144,
+      144,  144,  144,  144,  144,  144,  144,   24,  100,  144,
+      144,  144,   57,  144,  144,  105,  119,  144,  144,  144,
+      144,  144,  144,  144,  144,  144,  116,  140,   38,   39,
+       40,  144,  144,  144,  144,  144,  144,  144,  144,  144,
+      144,  144,  144,  144,  144,  144,  144,  144,  103,   95,
+      144,  144,  144,  144,  144,  144,   35,   36,   37,   67,
+
+      144,  144,    0,    0,    0,    0,    0,   91,  144,   20,
+       29,   30,   31,  144,   98,   16,  144,  144,  144,  144,
+      127,  128,  129,  144,   96,  120,   18,  130,  131,  132,
+      142,  124,  125,  126,  144,   52,  122,  144,  144,   32,
+       33,   34,  144,  144,  144,  144,  144,  144,  144,  144,
+      144,  144,  144,  144,  144,  144,  117,  144,  144,  144,
+      144,  144,  144,  144,  144,   99,  144,  139,  144,  144,
+       23,    0,    0,    0,    0,  144,  144,  144,  144,  144,
+      118,  113,  108,  144,  144,   68,   41,   42,   43,   44,
+       45,   46,   47,   48,   49,  144,  144,  144,  144,  123,
+
+      104,  144,  111,   28,  144,  136,   58,  112,   66,  106,
+      144,  144,  144,  144,  144,  144,    0,    0,    0,    0,
+      144,  144,  144,  107,   27,  144,  144,  144,  141,  144,
+      144,  144,  144,  144,  144,  101,   53,  144,   54,  144,
+        0,    0,    0,    7,    0,  144,   55,   21,  114,  144,
+      144,  144,  109,  144,  144,  144,  144,  144,  144,  102,
+      121,  110,    0,    0,    6,    0,    0,    0,    3,   15,
+      115,   56,  138,  144,  143,   60,   61,   62,  144,    0,
+        0,    0,    0,  144,  144,  144,  144,  144,  144,    4,
+        0,    5,    0,    0,    0,  144,  144,  144,  144,  144,
+
+       63,    0,  144,  144,  144,  144,  144,   59,  144,  133,
+      144,  134,  144,  144,  144,   64,  144,   65,  144,  144,
+      144,  135,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -470,133 +471,135 @@ static yyconst flex_int32_t yy_meta[60] =
        11,   11,   11,   11,   11,   12,   11,   11,    1
     } ;
 
-static yyconst flex_int16_t yy_base[538] =
+static yyconst flex_int16_t yy_base[543] =
     {   0,
-        0,   58,   81,    0,  809,  810,   59,  810,  785,  784,
-       54,  783,   55,   56,   54,  782,  129,  130,   53,  781,
-      127,    0,  769,  101,  106,  126,  116,  128,  143,  754,
-      144,  136,  753,  128,  145,  747,  142,  760,  159,  165,
-      149,  164,  756,  149,  214,  207,  774,  810,  215,  810,
-      783,  209,  810,    0,  228,  810,  810,  810,  810,  810,
-      810,  810,  810,  810,  205,  810,  208,  133,  223,  171,
-        0,  226,  772,  810,  810,  810,  771,    0,  810,  747,
-      740,  743,  751,  750,  737,  740,  751,  738,  744,  732,
-      729,  742,  729,  726,  726,  732,  720,  205,  725,  735,
-
-      721,  727,  730,  731,    0,  215,  730,  166,  716,  729,
-      720,  200,  713,  727,  724,  726,  709,  714,  711,  700,
-      709,  207,  713,  709,  711,  700,  703,  188,  708,  700,
-      712,  223,  705,  810,  810,  268,  256,  273,  810,  691,
-      703,  695,  705,  269,    0,  263,    0,  274,  810,  258,
-      278,  810,  314,  280,    0,  810,  810,    0,  693,  697,
-      706,  703,  687,  686,  686,  241,  701,  698,  698,  696,
-      693,  685,  691,  678,  689,  675,  691,    0,  688,  676,
-      683,  680,  684,  677,  666,  665,  678,  681,  678,  673,
-      664,  286,  669,  672,  663,  670,  659,  663,  669,  660,
-
-      651,  654,  652,  662,  652,  647,  645,  645,  647,  644,
-      655,  654,  259,  649,  644,  633,  297,  651,  653,  642,
-      634,  638,  649,  633,    0,  321,  313,  306,  810,  329,
-      340,  810,  639,    0,  637,  338,    0,  630,  628,  626,
-      634,  623,  640,  629,  341,    0,    0,  623,  633,  633,
-        0,  618,  344,    0,    0,  620,  347,  621,  615,  614,
-      615,  614,  350,    0,    0,  607,  606,  605,  607,  608,
-      613,  607,  603,  616,  611,  610,  602,  606,  598,  601,
-      596,  604,  609,  608,  599,    0,    0,  605,  594,  594,
-      599,  598,  595,    0,    0,    0,    0,  585,  597,  596,
-
-      595,  592,  581,  356,  367,  595,    0,    0,    0,    0,
-      582,    0,    0,  582,  583,  577,  587,    0,    0,    0,
-      578,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  585,    0,    0,  583,  579,    0,    0,    0,  365,
-      368,  371,  575,  571,  576,  567,  565,  578,  564,  577,
-      566,  573,    0,  571,  568,  572,  556,  565,  571,  566,
-      554,    0,  556,    0,  555,  558,    0,  553,  597,  552,
-      554,  543,  552,  541,  541,  554,    0,  556,    0,  548,
-      547,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      529,  542,  529,  526,    0,    0,  531,    0,    0,  522,
-
-        0,    0,    0,    0,    0,  519,  521,  514,  516,  513,
-      505,  498,  395,  513,  499,  494,  506,  504,    0,    0,
-      493,  497,  483,    0,  482,  470,  467,  452,  375,  456,
-        0,    0,  439,    0,  433,  428,  391,  323,  810,  423,
-      430,    0,    0,    0,  429,  415,  427,    0,  428,  417,
-      436,  435,  434,  407,    0,    0,    0,  411,  402,  810,
-      415,    0,  396,  810,    0,    0,    0,    0,  406,    0,
-      425,  371,  418,  412,  399,  417,  419,  423,  402,  402,
-      404,  400,  402,  384,  810,  425,  810,  437,    0,  433,
-      354,  371,  363,  360,  342,    0,  435,  313,  283,  267,
-
-      273,  256,    0,  258,  268,  248,    0,  239,  213,  195,
-        0,  206,    0,  168,   32,   11,    0,  810,  469,  473,
-      480,  487,  492,  498,  504,  506,  516,  525,  529,  533,
-      539,  550,  556,  558,  567,  578,  580
+        0,   58,   81,    0,  814,  815,   59,  815,  790,  789,
+       54,  788,   55,   56,   54,  787,  129,  130,   53,  786,
+      127,    0,  774,  101,  106,  126,  116,  128,  143,  759,
+      144,  136,  132,  142,  147,  753,  154,  766,  157,  163,
+      159,  176,  762,  149,  212,  191,  780,  815,  215,  815,
+      789,  232,  815,    0,  219,  815,  815,  815,  815,  815,
+      815,  815,  815,  815,  198,  815,  203,  200,  216,  224,
+        0,  229,  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,  218,  731,  741,
+
+      727,  733,  736,  737,    0,  213,  736,  717,  216,  721,
+      734,  725,  211,  718,  732,  729,  731,  714,  719,  716,
+      705,  714,  224,  718,  714,  716,  705,  708,  221,  713,
+      705,  717,  230,  710,  815,  815,  274,  267,  279,  815,
+      696,  708,  700,  710,  275,    0,  269,    0,  280,  815,
+      264,  284,  815,  282,  297,    0,  815,  815,    0,  698,
+      702,  711,  708,  692,  691,  691,  258,  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,  297,  673,  676,  667,  674,  663,  667,
+
+      673,  664,  655,  658,  656,  666,  656,  651,  649,  649,
+      651,  648,  659,  658,  271,  653,  648,  637,  313,  655,
+      657,  646,  638,  642,  653,  637,    0,  324,  324,  312,
+      815,  331,  344,  815,  643,    0,  641,  340,    0,  634,
+      632,  630,  638,  627,  644,  633,  343,    0,    0,  627,
+      637,  637,    0,  622,  349,    0,    0,  624,  352,  625,
+      619,  618,  619,  618,  358,  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,  363,  361,  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,  369,  375,  378,  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,  551,    0,  550,  546,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  531,  544,  531,  528,    0,
+
+        0,  532,    0,    0,  524,    0,    0,    0,    0,    0,
+      512,  523,  512,  518,  512,  507,  500,  395,  515,  501,
+      495,  508,  502,    0,    0,  492,  496,  475,    0,  475,
+      470,  464,  450,  390,  441,    0,    0,  437,    0,  435,
+      430,  386,  360,  815,  425,  432,    0,    0,    0,  431,
+      417,  429,    0,  430,  419,  438,  437,  436,  409,    0,
+        0,    0,  413,  415,  815,  418,    0,  396,  815,    0,
+        0,    0,    0,  402,    0,  420,  371,  420,  414,  402,
+      420,  422,  424,  405,  405,  407,  403,  389,  369,  815,
+      428,  815,  441,    0,  436,  350,  365,  315,  301,  295,
+
+        0,  438,  288,  287,  268,  279,  253,    0,  191,  197,
+      177,    0,  167,  159,  141,    0,  131,    0,  125,   32,
+       11,    0,  815,  472,  476,  483,  490,  495,  501,  507,
+      509,  519,  528,  532,  536,  542,  553,  559,  561,  570,
+      581,  583
     } ;
 
-static yyconst flex_int16_t yy_def[538] =
+static yyconst flex_int16_t yy_def[543] =
     {   0,
-      518,    1,  518,    3,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  518,  518,  518,  519,  518,  518,
-      518,  520,  518,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  521,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  522,  518,  523,   17,  524,  525,
-      526,  519,  518,  518,  518,  518,  518,  520,  518,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  527,  518,  521,  528,  518,  523,
-      529,  518,  518,  525,  526,  518,  518,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      518,  518,  518,  518,  527,  518,  528,  530,  518,  518,
-      529,  518,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  518,
-
-      518,  518,  518,  518,  530,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  518,  518,  518,
-      518,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  518,  518,  518,  518,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  518,  531,  532,  518,  518,
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,  518,  533,  518,
-      518,  534,  532,  518,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  518,  535,  536,  534,  520,  520,
-      520,  520,  520,  520,  518,  518,  518,  518,  537,  536,
-      520,  520,  520,  520,  520,  520,  537,  520,  520,  520,
-
-      520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
-      520,  520,  520,  520,  520,  520,  520,    0,  518,  518,
-      518,  518,  518,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  518,  518,  518
+      523,    1,  523,    3,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  524,  523,  523,
+      523,  525,  523,  525,  525,  525,  525,  525,  525,  525,
+      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
+      525,  525,  525,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  526,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  527,  523,  528,   17,  529,  530,
+      531,  524,  523,  523,  523,  523,  523,  525,  523,  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,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  532,  523,  526,  533,  523,
+      528,  534,  523,  523,  530,  531,  523,  523,  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,  523,  523,  523,  523,  532,  523,  533,  535,
+      523,  523,  534,  523,  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,  523,  523,  523,  523,  523,  535,  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,  523,  523,  523,  523,  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,  523,  523,  523,  523,
+      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
+      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
+      523,  536,  537,  523,  523,  525,  525,  525,  525,  525,
+      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
+      525,  525,  523,  538,  523,  523,  539,  537,  523,  525,
+      525,  525,  525,  525,  525,  525,  525,  525,  525,  523,
+      540,  541,  539,  525,  525,  525,  525,  525,  525,  523,
+      523,  523,  523,  542,  541,  525,  525,  525,  525,  525,
+
+      525,  542,  525,  525,  525,  525,  525,  525,  525,  525,
+      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
+      525,  525,    0,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523
     } ;
 
-static yyconst flex_int16_t yy_nxt[870] =
+static yyconst flex_int16_t yy_nxt[875] =
     {   0,
         6,    7,    8,    7,    9,    6,   10,   11,   12,   13,
        14,   15,   16,   17,   18,   18,   18,   18,   18,   18,
@@ -604,8 +607,8 @@ static yyconst flex_int16_t yy_nxt[870] =
        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,  517,   63,   65,   65,   65,
-       65,   65,   65,   65,   73,   74,   59,   62,   64,  516,
+       55,   58,   55,   46,   61,  522,   63,   65,   65,   65,
+       65,   65,   65,   65,   73,   74,   59,   62,   64,  521,
        47,   48,   49,   50,   49,   48,   48,   48,   48,   48,
        48,   48,   48,   51,   48,   52,   52,   52,   52,   52,
 
@@ -615,87 +618,88 @@ static yyconst flex_int16_t yy_nxt[870] =
        54,   54,   54,   54,   54,   54,   54,   54,   54,   48,
        67,   67,   68,   68,   68,   68,   68,   68,   69,   76,
        77,   80,   81,   82,   89,   83,   70,   70,   90,   84,
-       85,   71,  109,   91,   86,  518,  110,   70,   70,   92,
-       87,  134,   93,   88,   94,  105,  114,   96,  102,  111,
-      153,  153,  106,   95,   71,   97,  103,   98,  518,  107,
-       99,  115,  112,  118,  116,  128,  100,  104,  130,  129,
-
-      119,  120,  131,  124,  121,  515,  125,  135,  138,  139,
-      122,  132,  190,  123,  126,  136,  144,   55,  144,  137,
-      191,  127,  146,  146,  146,  146,  146,  146,  146,   55,
-      213,   55,  148,  149,   67,  151,  152,   67,  214,  176,
-      514,  206,  195,  148,  149,  140,  151,  152,  196,  513,
-       70,  141,  177,   70,  512,  142,  207,  138,  139,  184,
-      143,   70,  185,  186,   70,  218,  187,  219,  188,  136,
-      144,   55,  144,  137,  138,  139,  146,  146,  146,  146,
-      146,  146,  146,  226,  226,  228,  229,  230,  230,  518,
-      518,  240,  241,  511,  140,  510,  228,  229,  289,  509,
-
-      141,  266,  267,  268,  142,  508,  290,  507,  232,  143,
-      506,  140,  294,  295,  296,  304,  304,  141,  505,  232,
-      504,  142,  518,  518,  459,  460,  143,  154,  154,  154,
-      154,  154,  154,  154,  227,  227,  227,  227,  227,  227,
-      227,  149,  231,  231,  231,  231,  231,  231,  231,  518,
-      518,  503,  149,  308,  309,  310,  318,  319,  320,  325,
-      326,  327,  329,  330,  331,  337,  338,  339,  152,  305,
-      305,  305,  305,  305,  305,  305,  518,  518,  502,  152,
-      382,  383,  384,  385,  386,  387,  388,  389,  390,  451,
-      452,  453,  459,  460,  501,  229,  413,  459,  460,  500,
-
-      454,  481,  482,  459,  460,  499,  229,  498,  437,  438,
-      438,  438,  438,  438,  438,  476,  459,  460,  486,  487,
-      486,  487,  496,  462,  459,  460,  486,  487,  461,  461,
-      461,  461,  461,  461,  486,  487,  486,  487,  486,  487,
-      495,  494,  493,  492,  491,  485,  462,  484,  483,  489,
-      488,  488,  488,  488,  488,  488,  480,  479,  475,  474,
-      473,  472,  471,  470,  469,  468,  467,  466,  465,  464,
-      458,  457,  489,   72,   72,   72,  456,   72,   78,   78,
-       78,   78,   78,   78,   78,  147,  147,  147,  147,  147,
-      147,  147,   65,   65,  455,   65,   65,  150,  150,  450,
-
-      150,  150,   69,   69,   69,  449,   69,  154,  448,  154,
-      154,  155,  155,  155,  155,  155,  225,  225,  447,  225,
-      225,  225,  225,  225,  225,  225,  225,  225,  227,  446,
-      227,  227,  231,  445,  231,  231,  305,  444,  305,  305,
-      461,  461,  443,  442,  461,  441,  440,  439,  436,  435,
-      461,  463,  463,  434,  433,  463,  463,  477,  477,  432,
-      431,  477,  477,  478,  478,  478,  478,  478,  488,  488,
-      430,  429,  488,  428,  427,  426,  425,  424,  488,  490,
-      490,  423,  422,  490,  490,  497,  497,  497,  497,  497,
-      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,  396,  395,  394,  393,  392,
-      391,  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,  343,
-      342,  341,  340,  336,  335,  334,  333,  332,  328,  324,
-      323,  322,  321,  317,  316,  315,  314,  313,  312,  311,
-      307,  306,  303,  302,  301,  300,  299,  298,  297,  293,
-      292,  291,  288,  287,  286,  285,  284,  283,  282,  281,
-
-      280,  279,  278,  277,  276,  275,  274,  273,  272,  271,
-      270,  269,  265,  264,  263,  262,  261,  260,  259,  258,
-      257,  256,  255,  254,  253,  252,  251,  250,  249,  248,
-      247,  246,  245,  244,  243,  242,  239,  238,  237,  236,
-      235,  234,  233,  224,  223,  222,  221,  220,  217,  216,
-      215,  212,  211,  210,  209,  208,  205,  204,  203,  202,
-      201,  200,  199,  198,  197,  194,  193,  192,  189,  183,
-      182,  181,  180,  179,  178,  175,  174,  173,  172,  171,
-      170,  169,  168,  167,  166,  165,  164,  163,  162,  161,
-      160,  159,  158,  157,  156,  145,   75,  133,  117,  113,
-
-      108,  101,   79,   75,   66,   60,   57,   56,  518,    5,
-      518,  518,  518,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  518,  518,  518,  518,  518
+       85,   71,  520,   91,   86,  519,  108,   70,   70,   92,
+       87,  135,   93,   88,   94,  105,  110,   96,  102,  109,
+      111,  112,  106,   95,   71,   97,  103,   98,  115,  107,
+       99,  119,  139,  140,  113,  518,  100,  104,  120,  121,
+
+      517,  125,  122,  116,  126,  129,  117,  136,  123,  130,
+      131,  124,  127,  137,  132,   55,  145,  138,  145,  128,
+       55,  516,   55,  133,  515,  149,  150,   67,  514,  141,
+      152,  153,  523,  154,  154,  142,  149,  150,  513,  143,
+       67,  152,  153,   70,  144,  147,  147,  147,  147,  147,
+      147,  147,  177,  197,   70,  523,   70,  185,  208,  198,
+      186,  187,  192,  215,  188,  178,  189,   70,  139,  140,
+      193,  216,  220,  209,  221,  137,  145,   55,  145,  138,
+      139,  140,  147,  147,  147,  147,  147,  147,  147,  228,
+      228,  230,  231,  232,  232,  155,  155,  155,  155,  155,
+
+      155,  155,  230,  231,  512,  141,  523,  523,  242,  243,
+      292,  142,  269,  270,  271,  143,  511,  141,  293,  510,
+      144,  307,  307,  142,  509,  234,  508,  143,  297,  298,
+      299,  507,  144,  523,  523,  506,  234,  229,  229,  229,
+      229,  229,  229,  229,  233,  233,  233,  233,  233,  233,
+      233,  505,  150,  523,  523,  311,  312,  313,  321,  322,
+      323,  464,  465,  150,  328,  329,  330,  332,  333,  334,
+      523,  523,  153,  340,  341,  342,  308,  308,  308,  308,
+      308,  308,  308,  153,  387,  388,  389,  464,  465,  231,
+      390,  391,  392,  393,  394,  395,  418,  464,  465,  504,
+
+      231,  486,  487,  503,  456,  457,  458,  501,  442,  443,
+      443,  443,  443,  443,  443,  459,  464,  465,  467,  464,
+      465,  491,  492,  491,  492,  464,  465,  500,  481,  491,
+      492,  466,  466,  466,  466,  466,  466,  491,  492,  491,
+      492,  467,  491,  492,  499,  498,  497,  496,  490,  489,
+      488,  485,  494,  484,  493,  493,  493,  493,  493,  493,
+      480,  479,  478,  477,  476,  475,  474,  473,  472,  471,
+      470,  469,  463,  462,  461,  494,   72,   72,   72,  460,
+       72,   78,   78,   78,   78,   78,   78,   78,  148,  148,
+      148,  148,  148,  148,  148,   65,   65,  455,   65,   65,
+
+      151,  151,  454,  151,  151,   69,   69,   69,  453,   69,
+      155,  452,  155,  155,  156,  156,  156,  156,  156,  227,
+      227,  451,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  229,  450,  229,  229,  233,  449,  233,  233,  308,
+      448,  308,  308,  466,  466,  447,  446,  466,  445,  444,
+      441,  440,  439,  466,  468,  468,  438,  437,  468,  468,
+      482,  482,  436,  435,  482,  482,  483,  483,  483,  483,
+      483,  493,  493,  434,  433,  493,  432,  431,  430,  429,
+      428,  493,  495,  495,  427,  426,  495,  495,  502,  502,
+      502,  502,  502,  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,  396,  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,  343,  339,  338,  337,
+      336,  335,  331,  327,  326,  325,  324,  320,  319,  318,
+      317,  316,  315,  314,  310,  309,  306,  305,  304,  303,
+      302,  301,  300,  296,  295,  294,  291,  290,  289,  288,
+
+      287,  286,  285,  284,  283,  282,  281,  280,  279,  278,
+      277,  276,  275,  274,  273,  272,  268,  267,  266,  265,
+      264,  263,  262,  261,  260,  259,  258,  257,  256,  255,
+      254,  253,  252,  251,  250,  249,  248,  247,  246,  245,
+      244,  241,  240,  239,  238,  237,  236,  235,  226,  225,
+      224,  223,  222,  219,  218,  217,  214,  213,  212,  211,
+      210,  207,  206,  205,  204,  203,  202,  201,  200,  199,
+      196,  195,  194,  191,  190,  184,  183,  182,  181,  180,
+      179,  176,  175,  174,  173,  172,  171,  170,  169,  168,
+      167,  166,  165,  164,  163,  162,  161,  160,  159,  158,
+
+      157,  146,   75,  134,  118,  114,  101,   79,   75,   66,
+       60,   57,   56,  523,    5,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523
     } ;
 
-static yyconst flex_int16_t yy_chk[870] =
+static yyconst flex_int16_t yy_chk[875] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -703,8 +707,8 @@ static yyconst flex_int16_t yy_chk[870] =
         1,    1,    1,    1,    1,    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,  516,   14,   15,   15,   15,
-       15,   15,   15,   15,   19,   19,   11,   13,   14,  515,
+        7,   11,    7,    2,   13,  521,   14,   15,   15,   15,
+       15,   15,   15,   15,   19,   19,   11,   13,   14,  520,
         2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
 
@@ -714,84 +718,85 @@ static yyconst flex_int16_t yy_chk[870] =
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        17,   18,   17,   17,   17,   17,   17,   17,   17,   21,
        21,   24,   24,   25,   27,   25,   17,   18,   27,   25,
-       26,   17,   34,   27,   26,   68,   34,   17,   18,   27,
-       26,   44,   28,   26,   28,   32,   37,   29,   31,   35,
-       70,   70,   32,   28,   17,   29,   31,   29,   68,   32,
-       29,   37,   35,   39,   37,   41,   29,   31,   42,   41,
-
-       39,   39,   42,   40,   39,  514,   40,   44,   46,   46,
-       39,   42,  108,   39,   40,   45,   49,   45,   49,   45,
-      108,   40,   52,   52,   52,   52,   52,   52,   52,   55,
-      128,   55,   65,   65,   69,   67,   67,   72,  128,   98,
-      512,  122,  112,   65,   65,   46,   67,   67,  112,  510,
-       69,   46,   98,   72,  509,   46,  122,  137,  137,  106,
-       46,   69,  106,  106,   72,  132,  106,  132,  106,  136,
-      144,  136,  144,  136,  138,  138,  146,  146,  146,  146,
-      146,  146,  146,  148,  148,  150,  150,  151,  151,  154,
-      154,  166,  166,  508,  137,  506,  150,  150,  213,  505,
-
-      137,  192,  192,  192,  137,  504,  213,  502,  154,  137,
-      501,  138,  217,  217,  217,  228,  228,  138,  500,  154,
-      499,  138,  227,  227,  438,  438,  138,  153,  153,  153,
-      153,  153,  153,  153,  226,  226,  226,  226,  226,  226,
-      226,  227,  230,  230,  230,  230,  230,  230,  230,  231,
-      231,  498,  227,  236,  236,  236,  245,  245,  245,  253,
-      253,  253,  257,  257,  257,  263,  263,  263,  231,  304,
-      304,  304,  304,  304,  304,  304,  305,  305,  495,  231,
-      340,  340,  340,  341,  341,  341,  342,  342,  342,  429,
-      429,  429,  437,  437,  494,  305,  413,  463,  463,  493,
-
-      429,  472,  472,  459,  459,  492,  305,  491,  413,  413,
-      413,  413,  413,  413,  413,  459,  461,  461,  476,  476,
-      477,  477,  484,  437,  478,  478,  486,  486,  461,  461,
-      461,  461,  461,  461,  490,  490,  497,  497,  488,  488,
-      483,  482,  481,  480,  479,  475,  437,  474,  473,  476,
-      488,  488,  488,  488,  488,  488,  471,  469,  458,  454,
-      453,  452,  451,  450,  449,  447,  446,  445,  441,  440,
-      436,  435,  476,  519,  519,  519,  433,  519,  520,  520,
-      520,  520,  520,  520,  520,  521,  521,  521,  521,  521,
-      521,  521,  522,  522,  430,  522,  522,  523,  523,  428,
-
-      523,  523,  524,  524,  524,  427,  524,  525,  426,  525,
-      525,  526,  526,  526,  526,  526,  527,  527,  425,  527,
-      527,  527,  527,  527,  527,  527,  527,  527,  528,  423,
-      528,  528,  529,  422,  529,  529,  530,  421,  530,  530,
-      531,  531,  418,  417,  531,  416,  415,  414,  412,  411,
-      531,  532,  532,  410,  409,  532,  532,  533,  533,  408,
-      407,  533,  533,  534,  534,  534,  534,  534,  535,  535,
-      406,  400,  535,  397,  394,  393,  392,  391,  535,  536,
-      536,  381,  380,  536,  536,  537,  537,  537,  537,  537,
-      378,  376,  375,  374,  373,  372,  371,  370,  369,  368,
-
-      366,  365,  363,  361,  360,  359,  358,  357,  356,  355,
-      354,  352,  351,  350,  349,  348,  347,  346,  345,  344,
-      343,  336,  335,  332,  321,  317,  316,  315,  314,  311,
-      306,  303,  302,  301,  300,  299,  298,  293,  292,  291,
-      290,  289,  288,  285,  284,  283,  282,  281,  280,  279,
-      278,  277,  276,  275,  274,  273,  272,  271,  270,  269,
-      268,  267,  266,  262,  261,  260,  259,  258,  256,  252,
-      250,  249,  248,  244,  243,  242,  241,  240,  239,  238,
-      235,  233,  224,  223,  222,  221,  220,  219,  218,  216,
-      215,  214,  212,  211,  210,  209,  208,  207,  206,  205,
-
-      204,  203,  202,  201,  200,  199,  198,  197,  196,  195,
-      194,  193,  191,  190,  189,  188,  187,  186,  185,  184,
-      183,  182,  181,  180,  179,  177,  176,  175,  174,  173,
-      172,  171,  170,  169,  168,  167,  165,  164,  163,  162,
-      161,  160,  159,  143,  142,  141,  140,  133,  131,  130,
-      129,  127,  126,  125,  124,  123,  121,  120,  119,  118,
-      117,  116,  115,  114,  113,  111,  110,  109,  107,  104,
-      103,  102,  101,  100,   99,   97,   96,   95,   94,   93,
-       92,   91,   90,   89,   88,   87,   86,   85,   84,   83,
-       82,   81,   80,   77,   73,   51,   47,   43,   38,   36,
-
-       33,   30,   23,   20,   16,   12,   10,    9,    5,  518,
-      518,  518,  518,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  518,  518,  518,  518,  518,  518,
-      518,  518,  518,  518,  518,  518,  518,  518,  518
+       26,   17,  519,   27,   26,  517,   33,   17,   18,   27,
+       26,   44,   28,   26,   28,   32,   34,   29,   31,   33,
+       34,   35,   32,   28,   17,   29,   31,   29,   37,   32,
+       29,   39,   46,   46,   35,  515,   29,   31,   39,   39,
+
+      514,   40,   39,   37,   40,   41,   37,   44,   39,   41,
+       42,   39,   40,   45,   42,   45,   49,   45,   49,   40,
+       55,  513,   55,   42,  511,   65,   65,   69,  510,   46,
+       67,   67,   68,   70,   70,   46,   65,   65,  509,   46,
+       72,   67,   67,   69,   46,   52,   52,   52,   52,   52,
+       52,   52,   98,  113,   69,   68,   72,  106,  123,  113,
+      106,  106,  109,  129,  106,   98,  106,   72,  138,  138,
+      109,  129,  133,  123,  133,  137,  145,  137,  145,  137,
+      139,  139,  147,  147,  147,  147,  147,  147,  147,  149,
+      149,  151,  151,  152,  152,  154,  154,  154,  154,  154,
+
+      154,  154,  151,  151,  507,  138,  155,  155,  167,  167,
+      215,  138,  194,  194,  194,  138,  506,  139,  215,  505,
+      138,  230,  230,  139,  504,  155,  503,  139,  219,  219,
+      219,  500,  139,  229,  229,  499,  155,  228,  228,  228,
+      228,  228,  228,  228,  232,  232,  232,  232,  232,  232,
+      232,  498,  229,  233,  233,  238,  238,  238,  247,  247,
+      247,  443,  443,  229,  255,  255,  255,  259,  259,  259,
+      308,  308,  233,  265,  265,  265,  307,  307,  307,  307,
+      307,  307,  307,  233,  344,  344,  344,  442,  442,  308,
+      345,  345,  345,  346,  346,  346,  418,  468,  468,  497,
+
+      308,  477,  477,  496,  434,  434,  434,  489,  418,  418,
+      418,  418,  418,  418,  418,  434,  464,  464,  442,  466,
+      466,  481,  481,  482,  482,  483,  483,  488,  464,  491,
+      491,  466,  466,  466,  466,  466,  466,  495,  495,  502,
+      502,  442,  493,  493,  487,  486,  485,  484,  480,  479,
+      478,  476,  481,  474,  493,  493,  493,  493,  493,  493,
+      463,  459,  458,  457,  456,  455,  454,  452,  451,  450,
+      446,  445,  441,  440,  438,  481,  524,  524,  524,  435,
+      524,  525,  525,  525,  525,  525,  525,  525,  526,  526,
+      526,  526,  526,  526,  526,  527,  527,  433,  527,  527,
+
+      528,  528,  432,  528,  528,  529,  529,  529,  431,  529,
+      530,  430,  530,  530,  531,  531,  531,  531,  531,  532,
+      532,  428,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  533,  427,  533,  533,  534,  426,  534,  534,  535,
+      423,  535,  535,  536,  536,  422,  421,  536,  420,  419,
+      417,  416,  415,  536,  537,  537,  414,  413,  537,  537,
+      538,  538,  412,  411,  538,  538,  539,  539,  539,  539,
+      539,  540,  540,  405,  402,  540,  399,  398,  397,  396,
+      385,  540,  541,  541,  384,  382,  541,  541,  542,  542,
+      542,  542,  542,  380,  379,  378,  377,  376,  375,  374,
+
+      373,  372,  370,  369,  367,  365,  364,  363,  362,  361,
+      360,  359,  358,  356,  355,  354,  353,  352,  351,  350,
+      349,  348,  347,  343,  339,  338,  335,  324,  320,  319,
+      318,  317,  314,  309,  306,  305,  304,  303,  302,  301,
+      296,  295,  294,  293,  292,  291,  288,  287,  286,  285,
+      284,  283,  282,  281,  280,  279,  278,  277,  276,  275,
+      274,  273,  272,  271,  270,  269,  266,  264,  263,  262,
+      261,  260,  258,  254,  252,  251,  250,  246,  245,  244,
+      243,  242,  241,  240,  237,  235,  226,  225,  224,  223,
+      222,  221,  220,  218,  217,  216,  214,  213,  212,  211,
+
+      210,  209,  208,  207,  206,  205,  204,  203,  202,  201,
+      200,  199,  198,  197,  196,  195,  193,  192,  191,  190,
+      189,  188,  187,  186,  185,  184,  183,  182,  181,  180,
+      178,  177,  176,  175,  174,  173,  172,  171,  170,  169,
+      168,  166,  165,  164,  163,  162,  161,  160,  144,  143,
+      142,  141,  134,  132,  131,  130,  128,  127,  126,  125,
+      124,  122,  121,  120,  119,  118,  117,  116,  115,  114,
+      112,  111,  110,  108,  107,  104,  103,  102,  101,  100,
+       99,   97,   96,   95,   94,   93,   92,   91,   90,   89,
+       88,   87,   86,   85,   84,   83,   82,   81,   80,   77,
+
+       73,   51,   47,   43,   38,   36,   30,   23,   20,   16,
+       12,   10,    9,    5,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -841,7 +846,7 @@ static yyconst flex_int16_t yy_chk[870] =
 #define YY_USER_INIT yylineno = 0; yycolumn = 0;
 
 
-#line 845 "glsl_lexer.cpp"
+#line 850 "glsl_lexer.cpp"
 
 #define INITIAL 0
 #define PP 1
@@ -1090,7 +1095,7 @@ YY_DECL
 #line 56 "glsl_lexer.lpp"
 
 
-#line 1094 "glsl_lexer.cpp"
+#line 1099 "glsl_lexer.cpp"
 
     yylval = yylval_param;
 
@@ -1148,13 +1153,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 >= 519 )
+                               if ( yy_current_state >= 524 )
                                        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 != 518 );
+               while ( yy_current_state != 523 );
                yy_cp = yyg->yy_last_accepting_cpos;
                yy_current_state = yyg->yy_last_accepting_state;
 
@@ -1592,410 +1597,423 @@ return VOID;
 case 68:
 YY_RULE_SETUP
 #line 204 "glsl_lexer.lpp"
-return INC_OP;
+{
+                 if ((yyextra->language_version >= 140)
+                     || (yyextra->ARB_fragment_coord_conventions_enable)){
+                     return LAYOUT_TOK;
+                  } else {
+                     yylval->identifier = strdup(yytext);
+                     return IDENTIFIER;
+                  }
+               }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 205 "glsl_lexer.lpp"
-return DEC_OP;
+#line 214 "glsl_lexer.lpp"
+return INC_OP;
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 206 "glsl_lexer.lpp"
-return LE_OP;
+#line 215 "glsl_lexer.lpp"
+return DEC_OP;
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 207 "glsl_lexer.lpp"
-return GE_OP;
+#line 216 "glsl_lexer.lpp"
+return LE_OP;
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 208 "glsl_lexer.lpp"
-return EQ_OP;
+#line 217 "glsl_lexer.lpp"
+return GE_OP;
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 209 "glsl_lexer.lpp"
-return NE_OP;
+#line 218 "glsl_lexer.lpp"
+return EQ_OP;
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 210 "glsl_lexer.lpp"
-return AND_OP;
+#line 219 "glsl_lexer.lpp"
+return NE_OP;
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 211 "glsl_lexer.lpp"
-return OR_OP;
+#line 220 "glsl_lexer.lpp"
+return AND_OP;
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 212 "glsl_lexer.lpp"
-return XOR_OP;
+#line 221 "glsl_lexer.lpp"
+return OR_OP;
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 214 "glsl_lexer.lpp"
-return MUL_ASSIGN;
+#line 222 "glsl_lexer.lpp"
+return XOR_OP;
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 215 "glsl_lexer.lpp"
-return DIV_ASSIGN;
+#line 224 "glsl_lexer.lpp"
+return MUL_ASSIGN;
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 216 "glsl_lexer.lpp"
-return ADD_ASSIGN;
+#line 225 "glsl_lexer.lpp"
+return DIV_ASSIGN;
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 217 "glsl_lexer.lpp"
-return MOD_ASSIGN;
+#line 226 "glsl_lexer.lpp"
+return ADD_ASSIGN;
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 218 "glsl_lexer.lpp"
-return LEFT_ASSIGN;
+#line 227 "glsl_lexer.lpp"
+return MOD_ASSIGN;
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 219 "glsl_lexer.lpp"
-return RIGHT_ASSIGN;
+#line 228 "glsl_lexer.lpp"
+return LEFT_ASSIGN;
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 220 "glsl_lexer.lpp"
-return AND_ASSIGN;
+#line 229 "glsl_lexer.lpp"
+return RIGHT_ASSIGN;
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 221 "glsl_lexer.lpp"
-return XOR_ASSIGN;
+#line 230 "glsl_lexer.lpp"
+return AND_ASSIGN;
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 222 "glsl_lexer.lpp"
-return OR_ASSIGN;
+#line 231 "glsl_lexer.lpp"
+return XOR_ASSIGN;
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 223 "glsl_lexer.lpp"
-return SUB_ASSIGN;
+#line 232 "glsl_lexer.lpp"
+return OR_ASSIGN;
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 225 "glsl_lexer.lpp"
+#line 233 "glsl_lexer.lpp"
+return SUB_ASSIGN;
+       YY_BREAK
+case 88:
+YY_RULE_SETUP
+#line 235 "glsl_lexer.lpp"
 {
                            yylval->n = strtol(yytext, NULL, 10);
                            return INTCONSTANT;
                        }
        YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 229 "glsl_lexer.lpp"
+#line 239 "glsl_lexer.lpp"
 {
                            yylval->n = strtol(yytext + 2, NULL, 16);
                            return INTCONSTANT;
                        }
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 233 "glsl_lexer.lpp"
+#line 243 "glsl_lexer.lpp"
 {
                            yylval->n = strtol(yytext, NULL, 8);
                            return INTCONSTANT;
                        }
        YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 238 "glsl_lexer.lpp"
+#line 248 "glsl_lexer.lpp"
 {
                            yylval->real = strtod(yytext, NULL);
                            return FLOATCONSTANT;
                        }
        YY_BREAK
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 242 "glsl_lexer.lpp"
+#line 252 "glsl_lexer.lpp"
 {
                            yylval->real = strtod(yytext, NULL);
                            return FLOATCONSTANT;
                        }
        YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 246 "glsl_lexer.lpp"
+#line 256 "glsl_lexer.lpp"
 {
                            yylval->real = strtod(yytext, NULL);
                            return FLOATCONSTANT;
                        }
        YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 250 "glsl_lexer.lpp"
+#line 260 "glsl_lexer.lpp"
 {
                            yylval->real = strtod(yytext, NULL);
                            return FLOATCONSTANT;
                        }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 255 "glsl_lexer.lpp"
+#line 265 "glsl_lexer.lpp"
 {
                            yylval->n = 1;
                            return BOOLCONSTANT;
                        }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 259 "glsl_lexer.lpp"
+#line 269 "glsl_lexer.lpp"
 {
                            yylval->n = 0;
                            return BOOLCONSTANT;
                        }
        YY_BREAK
 /* Reserved words in GLSL 1.10. */
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 266 "glsl_lexer.lpp"
+#line 276 "glsl_lexer.lpp"
 return ASM;
        YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 267 "glsl_lexer.lpp"
+#line 277 "glsl_lexer.lpp"
 return CLASS;
        YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 268 "glsl_lexer.lpp"
+#line 278 "glsl_lexer.lpp"
 return UNION;
        YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 269 "glsl_lexer.lpp"
+#line 279 "glsl_lexer.lpp"
 return ENUM;
        YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 270 "glsl_lexer.lpp"
+#line 280 "glsl_lexer.lpp"
 return TYPEDEF;
        YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 271 "glsl_lexer.lpp"
+#line 281 "glsl_lexer.lpp"
 return TEMPLATE;
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 272 "glsl_lexer.lpp"
+#line 282 "glsl_lexer.lpp"
 return THIS;
        YY_BREAK
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 273 "glsl_lexer.lpp"
+#line 283 "glsl_lexer.lpp"
 return PACKED;
        YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 274 "glsl_lexer.lpp"
+#line 284 "glsl_lexer.lpp"
 return GOTO;
        YY_BREAK
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 275 "glsl_lexer.lpp"
+#line 285 "glsl_lexer.lpp"
 return SWITCH;
        YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 276 "glsl_lexer.lpp"
+#line 286 "glsl_lexer.lpp"
 return DEFAULT;
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 277 "glsl_lexer.lpp"
+#line 287 "glsl_lexer.lpp"
 return INLINE_TOK;
        YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 278 "glsl_lexer.lpp"
+#line 288 "glsl_lexer.lpp"
 return NOINLINE;
        YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 279 "glsl_lexer.lpp"
+#line 289 "glsl_lexer.lpp"
 return VOLATILE;
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 280 "glsl_lexer.lpp"
+#line 290 "glsl_lexer.lpp"
 return PUBLIC_TOK;
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 281 "glsl_lexer.lpp"
+#line 291 "glsl_lexer.lpp"
 return STATIC;
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 282 "glsl_lexer.lpp"
+#line 292 "glsl_lexer.lpp"
 return EXTERN;
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 283 "glsl_lexer.lpp"
+#line 293 "glsl_lexer.lpp"
 return EXTERNAL;
        YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 284 "glsl_lexer.lpp"
+#line 294 "glsl_lexer.lpp"
 return INTERFACE;
        YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 285 "glsl_lexer.lpp"
+#line 295 "glsl_lexer.lpp"
 return LONG;
        YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 286 "glsl_lexer.lpp"
+#line 296 "glsl_lexer.lpp"
 return SHORT;
        YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 287 "glsl_lexer.lpp"
+#line 297 "glsl_lexer.lpp"
 return DOUBLE;
        YY_BREAK
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 288 "glsl_lexer.lpp"
+#line 298 "glsl_lexer.lpp"
 return HALF;
        YY_BREAK
-case 119:
+case 120:
 YY_RULE_SETUP
-#line 289 "glsl_lexer.lpp"
+#line 299 "glsl_lexer.lpp"
 return FIXED;
        YY_BREAK
-case 120:
+case 121:
 YY_RULE_SETUP
-#line 290 "glsl_lexer.lpp"
+#line 300 "glsl_lexer.lpp"
 return UNSIGNED;
        YY_BREAK
-case 121:
+case 122:
 YY_RULE_SETUP
-#line 291 "glsl_lexer.lpp"
+#line 301 "glsl_lexer.lpp"
 return INPUT;
        YY_BREAK
-case 122:
+case 123:
 YY_RULE_SETUP
-#line 292 "glsl_lexer.lpp"
+#line 302 "glsl_lexer.lpp"
 return OUTPUT;
        YY_BREAK
-case 123:
+case 124:
 YY_RULE_SETUP
-#line 293 "glsl_lexer.lpp"
+#line 303 "glsl_lexer.lpp"
 return HVEC2;
        YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 294 "glsl_lexer.lpp"
+#line 304 "glsl_lexer.lpp"
 return HVEC3;
        YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 295 "glsl_lexer.lpp"
+#line 305 "glsl_lexer.lpp"
 return HVEC4;
        YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 296 "glsl_lexer.lpp"
+#line 306 "glsl_lexer.lpp"
 return DVEC2;
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 297 "glsl_lexer.lpp"
+#line 307 "glsl_lexer.lpp"
 return DVEC3;
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 298 "glsl_lexer.lpp"
+#line 308 "glsl_lexer.lpp"
 return DVEC4;
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 299 "glsl_lexer.lpp"
+#line 309 "glsl_lexer.lpp"
 return FVEC2;
        YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 300 "glsl_lexer.lpp"
+#line 310 "glsl_lexer.lpp"
 return FVEC3;
        YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 301 "glsl_lexer.lpp"
+#line 311 "glsl_lexer.lpp"
 return FVEC4;
        YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 302 "glsl_lexer.lpp"
+#line 312 "glsl_lexer.lpp"
 return SAMPLER2DRECT;
        YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 303 "glsl_lexer.lpp"
+#line 313 "glsl_lexer.lpp"
 return SAMPLER3DRECT;
        YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 304 "glsl_lexer.lpp"
+#line 314 "glsl_lexer.lpp"
 return SAMPLER2DRECTSHADOW;
        YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 305 "glsl_lexer.lpp"
+#line 315 "glsl_lexer.lpp"
 return SIZEOF;
        YY_BREAK
-case 136:
+case 137:
 YY_RULE_SETUP
-#line 306 "glsl_lexer.lpp"
+#line 316 "glsl_lexer.lpp"
 return CAST;
        YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 307 "glsl_lexer.lpp"
+#line 317 "glsl_lexer.lpp"
 return NAMESPACE;
        YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 308 "glsl_lexer.lpp"
+#line 318 "glsl_lexer.lpp"
 return USING;
        YY_BREAK
 /* Additional reserved words in GLSL 1.20. */
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 311 "glsl_lexer.lpp"
+#line 321 "glsl_lexer.lpp"
 return LOWP;
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 312 "glsl_lexer.lpp"
+#line 322 "glsl_lexer.lpp"
 return MEDIUMP;
        YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 313 "glsl_lexer.lpp"
+#line 323 "glsl_lexer.lpp"
 return HIGHP;
        YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 314 "glsl_lexer.lpp"
+#line 324 "glsl_lexer.lpp"
 return PRECISION;
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 316 "glsl_lexer.lpp"
+#line 326 "glsl_lexer.lpp"
 {
                            struct _mesa_glsl_parse_state *state = yyextra;
                            void *ctx = state;  
@@ -2003,17 +2021,17 @@ YY_RULE_SETUP
                            return IDENTIFIER;
                        }
        YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 323 "glsl_lexer.lpp"
+#line 333 "glsl_lexer.lpp"
 { return yytext[0]; }
        YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 325 "glsl_lexer.lpp"
+#line 335 "glsl_lexer.lpp"
 ECHO;
        YY_BREAK
-#line 2017 "glsl_lexer.cpp"
+#line 2035 "glsl_lexer.cpp"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(PP):
        yyterminate();
@@ -2310,7 +2328,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 >= 519 )
+                       if ( yy_current_state >= 524 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2339,11 +2357,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 >= 519 )
+               if ( yy_current_state >= 524 )
                        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 == 518);
+       yy_is_jam = (yy_current_state == 523);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3155,7 +3173,7 @@ void _mesa_glsl_free (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 325 "glsl_lexer.lpp"
+#line 335 "glsl_lexer.lpp"
 
 
 
index b0afc44d5e9351e17137d3be29dafc0f46fd5169..ebfea37597d37288617d1935ddf547065d45d485 100644 (file)
@@ -201,6 +201,16 @@ sampler2DShadow    return SAMPLER2DSHADOW;
 struct         return STRUCT;
 void           return VOID;
 
+layout         {
+                 if ((yyextra->language_version >= 140)
+                     || (yyextra->ARB_fragment_coord_conventions_enable)){
+                     return LAYOUT_TOK;
+                  } else {
+                     yylval->identifier = strdup(yytext);
+                     return IDENTIFIER;
+                  }
+               }
+
 \+\+           return INC_OP;
 --             return DEC_OP;
 \<=            return LE_OP;
index b2113c083c61ac3c6b548b3845369fbbecf7fa23..b31f558168fa8707d07ef65f536ab9a47d615f57 100644 (file)
      EOL = 371,
      INTERFACE = 372,
      OUTPUT = 373,
-     ASM = 374,
-     CLASS = 375,
-     UNION = 376,
-     ENUM = 377,
-     TYPEDEF = 378,
-     TEMPLATE = 379,
-     THIS = 380,
-     PACKED = 381,
-     GOTO = 382,
-     INLINE_TOK = 383,
-     NOINLINE = 384,
-     VOLATILE = 385,
-     PUBLIC_TOK = 386,
-     STATIC = 387,
-     EXTERN = 388,
-     EXTERNAL = 389,
-     LONG = 390,
-     SHORT = 391,
-     DOUBLE = 392,
-     HALF = 393,
-     FIXED = 394,
-     UNSIGNED = 395,
-     INPUT = 396,
-     OUPTUT = 397,
-     HVEC2 = 398,
-     HVEC3 = 399,
-     HVEC4 = 400,
-     DVEC2 = 401,
-     DVEC3 = 402,
-     DVEC4 = 403,
-     FVEC2 = 404,
-     FVEC3 = 405,
-     FVEC4 = 406,
-     SAMPLER2DRECT = 407,
-     SAMPLER3DRECT = 408,
-     SAMPLER2DRECTSHADOW = 409,
-     SIZEOF = 410,
-     CAST = 411,
-     NAMESPACE = 412,
-     USING = 413
+     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
    };
 #endif
 
@@ -338,7 +339,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 342 "glsl_parser.cpp"
+#line 343 "glsl_parser.cpp"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -363,7 +364,7 @@ typedef struct YYLTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 367 "glsl_parser.cpp"
+#line 368 "glsl_parser.cpp"
 
 #ifdef short
 # undef short
@@ -580,20 +581,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  5
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3646
+#define YYLAST   3839
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  183
+#define YYNTOKENS  184
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  85
+#define YYNNTS  89
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  270
+#define YYNRULES  276
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  403
+#define YYNSTATES  413
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   413
+#define YYMAXUTOK   414
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -604,16 +605,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,   167,     2,     2,     2,   171,   174,     2,
-     159,   160,   169,   165,   164,   166,   163,   170,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   178,   180,
-     172,   179,   173,   177,     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,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   161,     2,   162,   175,     2,     2,     2,     2,     2,
+       2,   162,     2,   163,   176,     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,   181,   176,   182,   168,     2,     2,     2,
+       2,     2,     2,   182,   177,   183,   169,     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,
@@ -642,7 +643,7 @@ 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
+     155,   156,   157,   158,   159
 };
 
 #if YYDEBUG
@@ -663,137 +664,139 @@ static const yytype_uint16 yyprhs[] =
      280,   283,   287,   291,   294,   300,   304,   307,   311,   314,
      315,   317,   319,   321,   323,   325,   329,   335,   342,   350,
      359,   365,   367,   370,   375,   381,   388,   396,   401,   404,
-     406,   409,   411,   413,   415,   417,   419,   422,   425,   427,
-     429,   431,   434,   436,   438,   441,   444,   446,   448,   451,
-     453,   457,   462,   464,   466,   468,   470,   472,   474,   476,
-     478,   480,   482,   484,   486,   488,   490,   492,   494,   496,
-     498,   500,   502,   504,   506,   508,   510,   512,   514,   516,
-     518,   520,   522,   524,   526,   528,   530,   532,   534,   536,
-     538,   540,   542,   544,   546,   548,   550,   552,   554,   556,
-     558,   560,   562,   564,   566,   568,   570,   572,   574,   576,
-     578,   580,   582,   588,   593,   595,   598,   602,   604,   608,
-     610,   615,   617,   619,   621,   623,   625,   627,   629,   631,
-     633,   635,   637,   639,   641,   643,   646,   650,   652,   654,
-     657,   661,   663,   666,   668,   671,   679,   685,   691,   699,
-     701,   706,   712,   716,   719,   725,   733,   740,   742,   744,
-     746,   747,   750,   754,   757,   760,   763,   767,   770,   772,
-     774
+     406,   409,   410,   412,   417,   419,   423,   425,   427,   429,
+     431,   433,   435,   438,   441,   443,   445,   448,   451,   454,
+     456,   459,   462,   464,   466,   469,   471,   475,   480,   482,
+     484,   486,   488,   490,   492,   494,   496,   498,   500,   502,
+     504,   506,   508,   510,   512,   514,   516,   518,   520,   522,
+     524,   526,   528,   530,   532,   534,   536,   538,   540,   542,
+     544,   546,   548,   550,   552,   554,   556,   558,   560,   562,
+     564,   566,   568,   570,   572,   574,   576,   578,   580,   582,
+     584,   586,   588,   590,   592,   594,   596,   598,   600,   606,
+     611,   613,   616,   620,   622,   626,   628,   633,   635,   637,
+     639,   641,   643,   645,   647,   649,   651,   653,   655,   657,
+     659,   661,   664,   668,   670,   672,   675,   679,   681,   684,
+     686,   689,   697,   703,   709,   717,   719,   724,   730,   734,
+     737,   743,   751,   758,   760,   762,   764,   765,   768,   772,
+     775,   778,   781,   785,   788,   790,   792
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     184,     0,    -1,    -1,   186,   187,   185,   189,    -1,    -1,
-     111,    81,   116,    -1,    -1,   187,   188,    -1,   112,    79,
-     115,    79,   116,    -1,   266,    -1,   189,   266,    -1,    79,
-      -1,   190,    -1,    81,    -1,    82,    -1,    80,    -1,    83,
-      -1,   159,   217,   160,    -1,   191,    -1,   192,   161,   193,
-     162,    -1,   194,    -1,   192,   163,    79,    -1,   192,    87,
-      -1,   192,    88,    -1,   217,    -1,   195,    -1,   196,    -1,
-     192,   163,   196,    -1,   198,   160,    -1,   197,   160,    -1,
-     199,    77,    -1,   199,    -1,   199,   215,    -1,   198,   164,
-     215,    -1,   200,   159,    -1,   235,    -1,    79,    -1,    84,
-      -1,   192,    -1,    87,   201,    -1,    88,   201,    -1,   202,
-     201,    -1,   165,    -1,   166,    -1,   167,    -1,   168,    -1,
-     201,    -1,   203,   169,   201,    -1,   203,   170,   201,    -1,
-     203,   171,   201,    -1,   203,    -1,   204,   165,   203,    -1,
-     204,   166,   203,    -1,   204,    -1,   205,    85,   204,    -1,
-     205,    86,   204,    -1,   205,    -1,   206,   172,   205,    -1,
-     206,   173,   205,    -1,   206,    89,   205,    -1,   206,    90,
-     205,    -1,   206,    -1,   207,    91,   206,    -1,   207,    92,
-     206,    -1,   207,    -1,   208,   174,   207,    -1,   208,    -1,
-     209,   175,   208,    -1,   209,    -1,   210,   176,   209,    -1,
-     210,    -1,   211,    93,   210,    -1,   211,    -1,   212,    95,
-     211,    -1,   212,    -1,   213,    94,   212,    -1,   213,    -1,
-     213,   177,   217,   178,   215,    -1,   214,    -1,   201,   216,
-     215,    -1,   179,    -1,    96,    -1,    97,    -1,    99,    -1,
+     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,
       98,    -1,   105,    -1,   100,    -1,   101,    -1,   102,    -1,
-     103,    -1,   104,    -1,   215,    -1,   217,   164,   215,    -1,
-     214,    -1,   220,   180,    -1,   228,   180,    -1,   110,   239,
-     236,   180,    -1,   221,   160,    -1,   223,    -1,   222,    -1,
-     223,   225,    -1,   222,   164,   225,    -1,   230,    79,   159,
-      -1,   235,    79,    -1,   235,    79,   161,   218,   162,    -1,
-     232,   226,   224,    -1,   226,   224,    -1,   232,   226,   227,
-      -1,   226,   227,    -1,    -1,    36,    -1,    37,    -1,    38,
-      -1,   235,    -1,   229,    -1,   228,   164,    79,    -1,   228,
-     164,    79,   161,   162,    -1,   228,   164,    79,   161,   218,
-     162,    -1,   228,   164,    79,   161,   162,   179,   245,    -1,
-     228,   164,    79,   161,   218,   162,   179,   245,    -1,   228,
-     164,    79,   179,   245,    -1,   230,    -1,   230,    79,    -1,
-     230,    79,   161,   162,    -1,   230,    79,   161,   218,   162,
-      -1,   230,    79,   161,   162,   179,   245,    -1,   230,    79,
-     161,   218,   162,   179,   245,    -1,   230,    79,   179,   245,
-      -1,   106,    79,    -1,   235,    -1,   233,   235,    -1,    43,
-      -1,    42,    -1,    41,    -1,     4,    -1,   234,    -1,   231,
-     233,    -1,   106,   233,    -1,     4,    -1,     3,    -1,    40,
-      -1,    35,    40,    -1,    36,    -1,    37,    -1,    35,    36,
-      -1,    35,    37,    -1,    39,    -1,   236,    -1,   239,   236,
-      -1,   237,    -1,   237,   161,   162,    -1,   237,   161,   218,
-     162,    -1,   238,    -1,   240,    -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,
-     152,    -1,    55,    -1,    56,    -1,    57,    -1,    58,    -1,
-     154,    -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,   181,   241,   182,    -1,    76,   181,
-     241,   182,    -1,   242,    -1,   241,   242,    -1,   235,   243,
-     180,    -1,   244,    -1,   243,   164,   244,    -1,    79,    -1,
-      79,   161,   218,   162,    -1,   215,    -1,   219,    -1,   248,
-      -1,   249,    -1,   251,    -1,   250,    -1,   257,    -1,   246,
-      -1,   255,    -1,   256,    -1,   259,    -1,   260,    -1,   261,
-      -1,   265,    -1,   181,   182,    -1,   181,   254,   182,    -1,
-     253,    -1,   250,    -1,   181,   182,    -1,   181,   254,   182,
-      -1,   247,    -1,   254,   247,    -1,   180,    -1,   217,   180,
-      -1,    14,   159,   217,   160,   248,    12,   248,    -1,    14,
-     159,   217,   160,   248,    -1,    14,   159,   217,   160,   249,
-      -1,    14,   159,   217,   160,   248,    12,   249,    -1,   217,
-      -1,   230,    79,   179,   245,    -1,    17,   159,   217,   160,
-     251,    -1,    18,   217,   178,    -1,    19,   178,    -1,    78,
-     159,   258,   160,   252,    -1,    11,   247,    78,   159,   217,
-     160,   180,    -1,    13,   159,   262,   264,   160,   252,    -1,
-     255,    -1,   246,    -1,   258,    -1,    -1,   263,   180,    -1,
-     263,   180,   217,    -1,    10,   180,    -1,     9,   180,    -1,
-      16,   180,    -1,    16,   217,   180,    -1,    15,   180,    -1,
-     267,    -1,   219,    -1,   220,   253,    -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,
+       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,
+      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
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   190,   190,   189,   198,   201,   218,   220,   224,   233,
-     241,   252,   256,   263,   270,   277,   284,   291,   298,   299,
-     305,   309,   316,   322,   331,   335,   339,   340,   349,   350,
-     354,   355,   359,   365,   377,   381,   387,   394,   405,   406,
-     412,   418,   428,   429,   430,   431,   435,   436,   442,   448,
-     457,   458,   464,   473,   474,   480,   489,   490,   496,   502,
-     508,   517,   518,   524,   533,   534,   543,   544,   553,   554,
-     563,   564,   573,   574,   583,   584,   593,   594,   603,   604,
-     613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
-     623,   627,   631,   647,   651,   655,   659,   673,   677,   678,
-     682,   687,   695,   706,   716,   731,   738,   743,   754,   766,
-     767,   768,   769,   773,   777,   778,   787,   796,   805,   814,
-     823,   836,   847,   856,   865,   874,   883,   892,   901,   915,
-     922,   933,   934,   935,   939,   943,   944,   948,   956,   957,
-     958,   959,   960,   961,   962,   963,   964,   968,   969,   977,
-     978,   984,   993,   999,  1005,  1014,  1015,  1016,  1017,  1018,
-    1019,  1020,  1021,  1022,  1023,  1024,  1025,  1026,  1027,  1028,
-    1029,  1030,  1031,  1032,  1033,  1034,  1035,  1036,  1037,  1038,
-    1039,  1040,  1041,  1042,  1043,  1044,  1045,  1046,  1047,  1048,
-    1049,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,  1058,
-    1059,  1060,  1061,  1062,  1063,  1064,  1065,  1066,  1067,  1071,
-    1082,  1093,  1107,  1113,  1122,  1127,  1135,  1150,  1155,  1163,
-    1169,  1178,  1182,  1188,  1189,  1193,  1194,  1198,  1202,  1203,
-    1204,  1205,  1206,  1207,  1208,  1212,  1218,  1227,  1228,  1232,
-    1238,  1247,  1257,  1269,  1275,  1284,  1293,  1299,  1305,  1314,
-    1318,  1332,  1336,  1337,  1341,  1348,  1355,  1365,  1366,  1370,
-    1372,  1378,  1383,  1392,  1398,  1404,  1410,  1416,  1425,  1426,
-    1430
+       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
 };
 #endif
 
@@ -822,16 +825,16 @@ static const char *const yytname[] =
   "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", "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",
+  "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",
   "external_declaration_list", "variable_identifier", "primary_expression",
   "postfix_expression", "integer_expression", "function_call",
@@ -850,12 +853,14 @@ static const char *const yytname[] =
   "function_header", "parameter_declarator", "parameter_declaration",
   "parameter_qualifier", "parameter_type_specifier",
   "init_declarator_list", "single_declaration", "fully_specified_type",
-  "interpolation_qualifier", "parameter_type_qualifier", "type_qualifier",
-  "storage_qualifier", "type_specifier", "type_specifier_no_prec",
-  "type_specifier_nonarray", "basic_type_specifier_nonarray",
-  "precision_qualifier", "struct_specifier", "struct_declaration_list",
-  "struct_declaration", "struct_declarator_list", "struct_declarator",
-  "initializer", "declaration_statement", "statement", "statement_matched",
+  "opt_layout_qualifier", "layout_qualifier", "layout_qualifier_id_list",
+  "layout_qualifier_id", "interpolation_qualifier",
+  "parameter_type_qualifier", "type_qualifier", "storage_qualifier",
+  "type_specifier", "type_specifier_no_prec", "type_specifier_nonarray",
+  "basic_type_specifier_nonarray", "precision_qualifier",
+  "struct_specifier", "struct_declaration_list", "struct_declaration",
+  "struct_declarator_list", "struct_declarator", "initializer",
+  "declaration_statement", "statement", "statement_matched",
   "statement_unmatched", "simple_statement", "compound_statement",
   "statement_no_new_scope", "compound_statement_no_new_scope",
   "statement_list", "expression_statement", "selection_statement_matched",
@@ -886,44 +891,44 @@ static const yytype_uint16 yytoknum[] =
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      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,    40,
-      41,    91,    93,    46,    44,    43,    45,    33,   126,    42,
-      47,    37,    60,    62,    38,    94,   124,    63,    58,    61,
-      59,   123,   125
+     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
+      40,    41,    91,    93,    46,    44,    43,    45,    33,   126,
+      42,    47,    37,    60,    62,    38,    94,   124,    63,    58,
+      61,    59,   123,   125
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   183,   185,   184,   186,   186,   187,   187,   188,   189,
-     189,   190,   191,   191,   191,   191,   191,   191,   192,   192,
-     192,   192,   192,   192,   193,   194,   195,   195,   196,   196,
-     197,   197,   198,   198,   199,   200,   200,   200,   201,   201,
-     201,   201,   202,   202,   202,   202,   203,   203,   203,   203,
-     204,   204,   204,   205,   205,   205,   206,   206,   206,   206,
-     206,   207,   207,   207,   208,   208,   209,   209,   210,   210,
-     211,   211,   212,   212,   213,   213,   214,   214,   215,   215,
-     216,   216,   216,   216,   216,   216,   216,   216,   216,   216,
-     216,   217,   217,   218,   219,   219,   219,   220,   221,   221,
-     222,   222,   223,   224,   224,   225,   225,   225,   225,   226,
-     226,   226,   226,   227,   228,   228,   228,   228,   228,   228,
-     228,   229,   229,   229,   229,   229,   229,   229,   229,   230,
-     230,   231,   231,   231,   232,   233,   233,   233,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   235,   235,   236,
-     236,   236,   237,   237,   237,   238,   238,   238,   238,   238,
-     238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
-     238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
-     238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
-     238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
-     238,   238,   238,   238,   238,   238,   238,   238,   238,   239,
-     239,   239,   240,   240,   241,   241,   242,   243,   243,   244,
-     244,   245,   246,   247,   247,   248,   248,   249,   250,   250,
-     250,   250,   250,   250,   250,   251,   251,   252,   252,   253,
-     253,   254,   254,   255,   255,   256,   257,   257,   257,   258,
-     258,   259,   260,   260,   261,   261,   261,   262,   262,   263,
-     263,   264,   264,   265,   265,   265,   265,   265,   266,   266,
-     267
+       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
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -942,21 +947,21 @@ static const yytype_uint8 yyr2[] =
        2,     3,     3,     2,     5,     3,     2,     3,     2,     0,
        1,     1,     1,     1,     1,     3,     5,     6,     7,     8,
        5,     1,     2,     4,     5,     6,     7,     4,     2,     1,
-       2,     1,     1,     1,     1,     1,     2,     2,     1,     1,
-       1,     2,     1,     1,     2,     2,     1,     1,     2,     1,
-       3,     4,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     0,     1,     4,     1,     3,     1,     1,     1,     1,
+       1,     1,     2,     2,     1,     1,     2,     2,     2,     1,
+       2,     2,     1,     1,     2,     1,     3,     4,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     5,     4,     1,     2,     3,     1,     3,     1,
-       4,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     3,     1,     1,     2,
-       3,     1,     2,     1,     2,     7,     5,     5,     7,     1,
-       4,     5,     3,     2,     5,     7,     6,     1,     1,     1,
-       0,     2,     3,     2,     2,     2,     3,     2,     1,     1,
-       2
+       1,     1,     1,     1,     1,     1,     1,     1,     5,     4,
+       1,     2,     3,     1,     3,     1,     4,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     2,     3,     1,     1,     2,     3,     1,     2,     1,
+       2,     7,     5,     5,     7,     1,     4,     5,     3,     2,
+       5,     7,     6,     1,     1,     1,     0,     2,     3,     2,
+       2,     2,     3,     2,     1,     1,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -964,730 +969,757 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       4,     0,     0,     6,     0,     1,     2,     5,     0,     0,
-       7,     0,   139,   138,   159,   156,   157,   158,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   160,   161,   162,
-     172,   173,   174,     0,   142,   143,   146,   140,   133,   132,
-     131,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   187,   188,   189,   190,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,     0,   155,   154,     0,   211,   210,   209,
-       0,   186,   191,     3,   269,     0,     0,    99,   109,     0,
-     114,   121,     0,     0,   135,   129,   147,   149,   152,     0,
-     153,     9,   268,     0,   144,   145,   141,     0,     0,   128,
-       0,   137,     0,    10,    94,     0,   270,    97,   109,   134,
-     110,   111,   112,   100,     0,   109,     0,    95,   122,   136,
-     130,     0,   148,     0,     0,     0,     0,   214,     0,     0,
+       4,     0,     0,     6,     0,     1,     2,     5,     0,   131,
+       7,     0,   145,   144,   165,   162,   163,   164,   169,   170,
+     171,   172,   173,   174,   175,   176,   177,   166,   167,   168,
+     178,   179,   180,     0,   149,   152,   139,   138,   137,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     193,   194,   195,   196,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,     0,   161,   160,   131,   217,   216,   215,     0,     0,
+     192,   197,   131,   275,     0,     0,    99,   109,     0,   114,
+     121,     0,   132,   131,     0,   141,   129,   153,   155,   158,
+       0,   159,     9,   274,     0,   150,   151,   147,     0,     0,
+     128,   131,   143,     0,     0,    10,    94,   131,   276,    97,
+     109,   140,   110,   111,   112,   100,     0,   109,     0,    95,
+     122,   148,   146,   142,   130,     0,   154,     0,     0,     0,
+       0,   220,     0,   136,     0,   134,     0,     0,   131,     0,
+       0,     0,     0,     0,     0,     0,     0,    11,    15,    13,
+      14,    16,    37,     0,     0,     0,    42,    43,    44,    45,
+     249,   131,   245,    12,    18,    38,    20,    25,    26,     0,
+       0,    31,     0,    46,     0,    50,    53,    56,    61,    64,
+      66,    68,    70,    72,    74,    76,    78,    91,     0,   228,
+       0,   129,   234,   247,   229,   230,   232,   231,   131,   235,
+     236,   233,   237,   238,   239,   240,   101,   106,   108,   113,
+       0,   115,   102,     0,     0,   156,    46,    93,     0,    35,
+       8,     0,   225,     0,   223,   219,   221,    96,   133,     0,
+     270,   269,     0,   131,     0,   273,   271,     0,     0,     0,
+     259,   131,    39,    40,     0,   241,   131,    22,    23,     0,
+       0,    29,    28,     0,   161,    32,    34,    81,    82,    84,
+      83,    86,    87,    88,    89,    90,    85,    80,     0,    41,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      11,    15,    13,    14,    16,    37,     0,     0,     0,    42,
-      43,    44,    45,   243,     0,   239,    12,    18,    38,    20,
-      25,    26,     0,     0,    31,     0,    46,     0,    50,    53,
-      56,    61,    64,    66,    68,    70,    72,    74,    76,    78,
-      91,     0,   222,     0,   129,   228,   241,   223,   224,   226,
-     225,     0,   229,   230,   227,   231,   232,   233,   234,   101,
-     106,   108,   113,     0,   115,   102,     0,     0,   150,    46,
-      93,     0,    35,     8,     0,   219,     0,   217,   213,   215,
-      96,   264,   263,     0,     0,     0,   267,   265,     0,     0,
-       0,   253,     0,    39,    40,     0,   235,     0,    22,    23,
-       0,     0,    29,    28,     0,   155,    32,    34,    81,    82,
-      84,    83,    86,    87,    88,    89,    90,    85,    80,     0,
-      41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   244,   240,   242,   103,   105,   107,     0,     0,
-     123,     0,   221,   127,   151,   212,     0,     0,   216,     0,
-     258,   257,   260,     0,   266,     0,   252,   249,     0,     0,
-      17,   236,     0,    24,    21,    27,    33,    79,    47,    48,
+       0,   250,   246,   248,   103,   105,   107,     0,     0,   123,
+       0,   227,   127,   157,   218,     0,     0,   222,   135,     0,
+     264,   263,   131,     0,   272,     0,   258,   255,     0,     0,
+      17,   242,     0,    24,    21,    27,    33,    79,    47,    48,
       49,    51,    52,    54,    55,    59,    60,    57,    58,    62,
       63,    65,    67,    69,    71,    73,    75,     0,    92,     0,
-     116,     0,   120,     0,   124,     0,   218,     0,   259,     0,
-       0,     0,     0,     0,     0,    19,     0,     0,     0,   117,
-     125,     0,   220,     0,   261,     0,   246,   247,   251,     0,
-       0,   238,   254,   237,    77,   104,   118,     0,   126,     0,
-     262,   256,     0,   250,     0,   119,   255,   245,   248,     0,
-       0,     0,     0
+     116,     0,   120,     0,   124,     0,   224,     0,   265,     0,
+       0,   131,     0,     0,   131,    19,     0,     0,     0,   117,
+     125,     0,   226,     0,   267,   131,   252,   253,   257,     0,
+       0,   244,   260,   243,    77,   104,   118,     0,   126,     0,
+     268,   262,   131,   256,     0,   119,   261,   251,   254,     0,
+     131,     0,   131
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     2,     9,     3,     6,    10,    83,   166,   167,   168,
-     322,   169,   170,   171,   172,   173,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,   190,   269,   191,   221,   192,   193,    86,    87,
-      88,   210,   123,   124,   211,    89,    90,    91,    92,   125,
-      93,    94,   222,    96,    97,    98,    99,   100,   136,   137,
-     226,   227,   303,   195,   196,   197,   198,   199,   200,   382,
-     383,   201,   202,   203,   204,   319,   205,   206,   207,   312,
-     359,   360,   208,   101,   102
+      -1,     2,     9,     3,     6,    10,    82,   173,   174,   175,
+     332,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   278,   198,   228,   199,   200,    85,    86,
+      87,   217,   125,   126,   218,    88,    89,    90,    91,    92,
+     144,   145,    93,   127,    94,    95,   229,    97,    98,    99,
+     100,   101,   140,   141,   233,   234,   312,   202,   203,   204,
+     205,   206,   207,   392,   393,   208,   209,   210,   211,   329,
+     212,   213,   214,   322,   369,   370,   215,   102,   103
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -325
+#define YYPACT_NINF -353
 static const yytype_int16 yypact[] =
 {
-     -52,    -1,    67,  -325,   -31,  -325,    37,  -325,    23,  3159,
-    -325,    52,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
-    -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
-    -325,  -325,  -325,    94,  -325,  -325,  -325,  -325,  -325,  -325,
-    -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
-    -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
-    -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
-    -325,  -325,  -325,   -72,  -325,  -325,    12,  -325,  -325,  -325,
-      36,  -325,  -325,  3159,  -325,  -163,    30,    27,    -2,   -98,
-    -325,   114,   144,  3381,  -325,  -325,  -325,    33,  -325,  3492,
-    -325,  -325,  -325,   117,  -325,  -325,  -325,    17,  3381,  -325,
-     144,  -325,  3492,  -325,  -325,   391,  -325,  -325,    35,  -325,
-    -325,  -325,  -325,  -325,  3381,   116,   120,  -325,  -119,  -325,
-    -325,  2393,  -325,    86,  3381,   124,  1799,  -325,    25,    26,
-      29,  1111,    48,    51,    31,  2077,    53,  2843,    39,    54,
-     -67,  -325,  -325,  -325,  -325,  -325,  2843,  2843,  2843,  -325,
-    -325,  -325,  -325,  -325,   571,  -325,  -325,  -325,   -44,  -325,
-    -325,  -325,    60,   -99,  2993,    55,   -75,  2843,   -10,     4,
-      71,   -79,    80,    47,    49,    46,   130,   131,   -63,  -325,
-    -325,   -59,  -325,    50,    68,  -325,  -325,  -325,  -325,  -325,
-    -325,   751,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
-    -325,  -325,   149,  3381,  -129,  -325,  2543,  2843,  -325,  -325,
-    -325,    69,  -325,  -325,  1938,    73,   -56,  -325,  -325,  -325,
-    -325,  -325,  -325,   151,  1635,  2843,  -325,  -325,   -51,  2843,
-    -108,  -325,  2243,  -325,  -325,   -38,  -325,   931,  -325,  -325,
-    2843,  3270,  -325,  -325,  2843,    72,  -325,  -325,  -325,  -325,
-    -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  2843,
-    -325,  2843,  2843,  2843,  2843,  2843,  2843,  2843,  2843,  2843,
-    2843,  2843,  2843,  2843,  2843,  2843,  2843,  2843,  2843,  2843,
-    2843,  2843,  -325,  -325,  -325,    75,  -325,  -325,  2693,  2843,
-      58,    77,  -325,  -325,  -325,  -325,  2843,   124,  -325,    81,
-    -325,  -325,  2243,   -27,  -325,   -25,  -325,    78,   162,    83,
-    -325,  -325,    82,    78,    87,  -325,  -325,  -325,  -325,  -325,
-    -325,   -10,   -10,     4,     4,    71,    71,    71,    71,   -79,
-     -79,    80,    47,    49,    46,   130,   131,  -102,  -325,  2843,
-      66,    85,  -325,  2843,    70,    89,  -325,  2843,  -325,    74,
-      88,  1111,    95,    96,  1290,  -325,  2843,    90,  2843,    98,
-    -325,  2843,  -325,   -24,  2843,  1290,   241,  -325,  -325,  2843,
-     119,  -325,  -325,  -325,  -325,  -325,  -325,  2843,  -325,    99,
-      78,  -325,  1111,  -325,  2843,  -325,  -325,  -325,  -325,   -14,
-    1469,   268,  1469
+     -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
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
-    -325,  -325,  -325,    34,  -325,  -325,  -325,  -325,   -15,  -325,
-    -100,   -88,  -115,  -105,    -3,     1,    -4,     0,     2,    -5,
-    -325,  -130,  -171,  -325,  -139,  -211,     5,    24,  -325,  -325,
-    -325,    76,   170,   167,    84,  -325,  -325,  -222,  -325,  -325,
-     -35,  -325,    -9,   -54,  -325,  -325,   213,  -325,   160,  -123,
-    -325,   -12,  -290,    62,  -137,  -323,  -324,  -252,   -64,   -76,
-     215,   137,    79,  -325,  -325,    -8,  -325,  -325,  -325,  -325,
-    -325,  -325,  -325,   219,  -325
+    -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
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -155
+#define YYTABLE_NINF -267
 static const yytype_int16 yytable[] =
 {
-      95,   220,   119,   256,   233,   301,   238,   107,   240,   352,
-     278,   279,  -154,   229,    84,    12,    13,   114,   115,   245,
-     318,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-     267,   289,   298,    85,   120,   121,   122,   377,   376,   119,
-     215,   111,   216,   248,   249,   132,   302,    33,    34,    35,
-     299,    36,    37,    38,    39,    40,   291,   129,   138,     1,
-     217,   253,   291,   370,   294,   254,   126,     5,   398,   397,
-     316,   120,   121,   122,    95,   111,   366,   401,   386,   397,
-       4,   388,   127,   326,   130,     7,   220,   351,    84,   393,
-     318,   109,   -36,   280,   281,   355,   313,   395,   327,   135,
-     315,   229,    11,   317,   268,   291,   194,    85,   307,   108,
-     294,   323,   381,   291,   290,   212,   219,   250,   110,   251,
-     348,   292,   320,   381,   308,   135,   291,   135,   302,   314,
-     104,   105,   194,   361,   106,   362,   389,   291,   367,   291,
-     291,   243,   244,    77,    78,    79,   400,    12,    13,     8,
-     291,   347,   120,   121,   122,   194,   276,   277,   -98,   271,
-     272,   273,   270,   335,   336,   337,   338,   103,   220,   274,
-     275,   282,   283,   317,   331,   332,   220,   339,   340,    33,
-      34,    35,   302,    36,    37,    38,    39,    40,   333,   334,
-     117,   118,   194,   128,   131,   384,   133,   302,   134,   214,
-     302,   219,   223,   225,   212,   230,   231,   234,   302,   232,
-     235,   236,   239,   242,   257,   135,   302,   241,   373,   220,
-     252,   284,   286,   287,   285,   194,   288,   -35,   295,   309,
-     114,   304,   -30,   194,   306,   390,   349,   353,   194,   354,
-     357,   363,   291,   364,   365,   368,   -36,   369,   375,   371,
-     110,   372,   385,   392,   374,   399,   328,   329,   330,   219,
-     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
-     219,   219,   219,   219,   219,   379,   164,   387,   394,   396,
-     402,   341,   343,   219,   346,   325,   342,   344,   209,   296,
-     345,   219,   213,   112,   224,   356,   310,   297,   378,   391,
-     116,   247,   113,   194,   358,     0,     0,     0,     0,     0,
-       0,     0,     0,   311,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   219,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   194,     0,     0,   194,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   194,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   194,     0,     0,     0,     0,     0,     0,
-       0,   194,     0,   194,    12,    13,    14,    15,    16,    17,
-     139,   140,   141,     0,   142,   143,   144,   145,   146,   147,
-     148,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    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,    73,    74,   149,
-     150,   151,   152,   153,   154,   155,     0,     0,   156,   157,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    76,    77,    78,
-      79,    80,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    81,     0,    82,     0,     0,     0,     0,
-     158,     0,     0,     0,     0,     0,   159,   160,   161,   162,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   163,   164,   165,    12,    13,    14,    15,    16,    17,
-     139,   140,   141,     0,   142,   143,   144,   145,   146,   147,
-     148,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    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,    73,    74,   149,
-     150,   151,   152,   153,   154,   155,     0,     0,   156,   157,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    76,    77,    78,
-      79,    80,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    81,     0,    82,     0,     0,     0,     0,
-     158,     0,     0,     0,     0,     0,   159,   160,   161,   162,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   163,   164,   246,    12,    13,    14,    15,    16,    17,
-     139,   140,   141,     0,   142,   143,   144,   145,   146,   147,
-     148,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    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,    73,    74,   149,
-     150,   151,   152,   153,   154,   155,     0,     0,   156,   157,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    76,    77,    78,
-      79,    80,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      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,
+     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,
+     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,
+      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,
        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,
+      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,
-       0,     0,     0,    81,     0,    82,     0,     0,     0,     0,
-     158,     0,     0,     0,     0,     0,   159,   160,   161,   162,
+      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,   163,   164,   293,    12,    13,    14,    15,    16,    17,
-     139,   140,   141,     0,   142,   143,   144,   145,   146,   147,
-     148,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    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,    73,    74,   149,
-     150,   151,   152,   153,   154,   155,     0,     0,   156,   157,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    76,    77,    78,
-      79,    80,     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,
+      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,    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,    81,     0,    82,     0,     0,     0,     0,
-     158,     0,     0,     0,     0,     0,   159,   160,   161,   162,
+       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,   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,     0,     0,     0,     0,
-       0,   163,   164,   321,    12,    13,    14,    15,    16,    17,
-     139,   140,   141,     0,   142,   143,   144,   145,   146,   147,
-     148,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    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,    73,    74,   149,
-     150,   151,   152,   153,   154,   155,     0,     0,   156,   157,
+       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,     0,     0,     0,    76,    77,    78,
-      79,    80,     0,     0,     0,     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,     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,    81,     0,    82,     0,     0,     0,     0,
-     158,     0,     0,     0,     0,     0,   159,   160,   161,   162,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   163,   164,    12,    13,    14,    15,    16,    17,   139,
-     140,   141,     0,   142,   380,   144,   145,   146,   147,   148,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    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,    73,    74,   149,   150,
-     151,   152,   153,   154,   155,     0,     0,   156,   157,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    76,    77,    78,    79,
-      80,     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,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    81,     0,    82,     0,     0,     0,     0,   158,
-       0,     0,     0,     0,     0,   159,   160,   161,   162,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     163,   115,    12,    13,    14,    15,    16,    17,   139,   140,
-     141,     0,   142,   380,   144,   145,   146,   147,   148,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,     0,    36,    37,
+      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,    73,    74,   149,   150,   151,
-     152,   153,   154,   155,     0,     0,   156,   157,     0,     0,
+      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,     0,    76,    77,    78,    79,    80,
+       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,     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,   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,
-       0,    81,     0,    82,     0,     0,     0,     0,   158,     0,
-       0,     0,     0,     0,   159,   160,   161,   162,    12,    13,
-      14,    15,    16,    17,     0,     0,     0,     0,     0,   163,
-     164,     0,     0,     0,     0,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    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,    73,    74,     0,   150,   151,   152,   153,   154,   155,
-       0,     0,   156,   157,     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,    76,    77,    78,    79,    80,     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,   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,    81,     0,    82,
-       0,     0,     0,     0,   158,     0,     0,     0,     0,     0,
-     159,   160,   161,   162,    14,    15,    16,    17,     0,     0,
-       0,     0,     0,     0,     0,   163,     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,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,     0,    75,     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,    77,    78,    79,     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,    14,    15,    16,    17,     0,     0,     0,
-       0,    81,     0,    82,     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,   228,    41,    42,    43,    44,    45,    46,    47,    48,
+       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,    73,    74,     0,    75,     0,     0,
+      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,    77,    78,    79,     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,    14,    15,    16,    17,     0,     0,     0,     0,
-      81,     0,    82,     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,
-     305,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,     0,   150,   151,   152,   153,
-     154,   155,     0,     0,   156,   157,     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,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    77,    78,    79,     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,    81,
-       0,    82,     0,     0,     0,     0,   158,     0,     0,     0,
-       0,     0,   159,   160,   161,   162,    12,    13,    14,    15,
-      16,    17,     0,     0,     0,     0,     0,   237,     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,    34,
-      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,    73,
-      74,     0,   150,   151,   152,   153,   154,   155,     0,     0,
-     156,   157,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
-      77,    78,    79,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      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,    81,     0,    82,    14,    15,
-      16,    17,   158,     0,     0,     0,     0,     0,   159,   160,
-     161,   162,     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,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,     0,   150,   151,   152,   153,   154,   155,     0,     0,
-     156,   157,     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,     0,     0,     0,     0,     0,     0,     0,     0,
-      77,    78,    79,     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,    81,     0,    82,    14,    15,
-      16,    17,   158,     0,     0,   218,     0,     0,   159,   160,
-     161,   162,     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,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,     0,   150,   151,   152,   153,   154,   155,     0,     0,
-     156,   157,     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,
-      77,    78,    79,     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,    81,     0,    82,    14,    15,
-      16,    17,   158,     0,     0,   300,     0,     0,   159,   160,
-     161,   162,     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,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,     0,   150,   151,   152,   153,   154,   155,     0,     0,
-     156,   157,     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,     0,     0,     0,     0,     0,     0,
-      77,    78,    79,     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,    81,     0,    82,    14,    15,
-      16,    17,   158,     0,     0,   350,     0,     0,   159,   160,
-     161,   162,     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,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,     0,   150,   151,   152,   153,   154,   155,     0,     0,
-     156,   157,     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,
+      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,
-      77,    78,    79,     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,    81,     0,    82,    14,    15,
-      16,    17,   158,     0,     0,     0,     0,     0,   159,   160,
-     161,   162,     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,    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,
-     255,     0,   150,   151,   152,   153,   154,   155,     0,     0,
-     156,   157,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      77,    78,    79,     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,     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,    81,     0,    82,     0,     0,
-       0,     0,   158,     0,     0,     0,     0,     0,   159,   160,
-     161,   162,    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,    34,    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,    73,    74,     0,    75,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    76,    77,    78,    79,    80,
-       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,    81,     0,    82,    41,    42,    43,    44,    45,    46,
+       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,    73,    74,     0,   324,
-       0,     0,     0,     0,   155,     0,     0,     0,     0,     0,
+      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,    77,    78,    79,
-       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,    81,     0,    82,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,     0,
-      75,     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,    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,    80,    34,    81,    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,     0,     0,     0,     0,     0,     0,     0,    77,    78,
-      79,     0,     0,     0,     0,     0,     0,    14,    15,    16,
+       0,    74,    75,    76,    77,    78,     0,     0,     0,     0,
+       0,     0,     0,     0,    79,    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,    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,    81,     0,    82,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-       0,    75,     0,     0,     0,     0,     0,     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,    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,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    81,     0,    82
+       0,     0,     0,     0,     0,     0,     0,    80,     0,    81
 };
 
 static const yytype_int16 yycheck[] =
 {
-       9,   131,     4,   174,   141,   216,   145,    79,   147,   299,
-      89,    90,    79,   136,     9,     3,     4,   180,   181,   158,
-     242,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,    94,   161,     9,    36,    37,    38,   361,   361,     4,
-     159,    76,   161,    87,    88,    99,   217,    35,    36,    37,
-     179,    39,    40,    41,    42,    43,   164,    92,   112,   111,
-     179,   160,   164,   353,   201,   164,   164,     0,   392,   392,
-     178,    36,    37,    38,    83,   110,   178,   400,   368,   402,
-      81,   371,   180,   254,    93,   116,   216,   298,    83,   379,
-     312,    79,   159,   172,   173,   306,   235,   387,   269,   108,
-     239,   224,    79,   242,   179,   164,   115,    83,   164,   181,
-     247,   250,   364,   164,   177,   124,   131,   161,   106,   163,
-     291,   180,   160,   375,   180,   134,   164,   136,   299,   180,
-      36,    37,   141,   160,    40,   160,   160,   164,   349,   164,
-     164,   156,   157,   107,   108,   109,   160,     3,     4,   112,
-     164,   290,    36,    37,    38,   164,    85,    86,   160,   169,
-     170,   171,   177,   278,   279,   280,   281,   115,   298,   165,
-     166,    91,    92,   312,   274,   275,   306,   282,   283,    35,
-      36,    37,   353,    39,    40,    41,    42,    43,   276,   277,
-     160,   164,   201,    79,   161,   366,    79,   368,   181,    79,
-     371,   216,   116,    79,   213,   180,   180,   159,   379,   180,
-     159,   180,   159,   159,   159,   224,   387,   178,   357,   349,
-     160,   174,   176,    93,   175,   234,    95,   159,    79,    78,
-     180,   162,   160,   242,   161,   374,   161,   179,   247,   162,
-     159,    79,   164,   160,   162,   179,   159,   162,   160,   179,
-     106,   162,   162,    12,   180,   394,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   179,   181,   179,   159,   180,
-      12,   284,   286,   298,   289,   251,   285,   287,   118,   213,
-     288,   306,   125,    80,   134,   307,   234,   213,   362,   375,
-      85,   164,    83,   312,   312,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   234,    -1,    -1,    -1,    -1,    -1,    -1,
+       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,
+     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,
+      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,
+      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,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   349,    -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,
+       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,   361,    -1,    -1,   364,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   375,    -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,   392,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   400,    -1,   402,     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,    36,    37,    -1,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,    -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,
+      -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,    -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,    -1,    -1,    -1,
-      -1,    -1,    -1,   152,    -1,   154,    -1,    -1,    -1,    -1,
-     159,    -1,    -1,    -1,    -1,    -1,   165,   166,   167,   168,
+      -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,    -1,
-      -1,   180,   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,    36,    37,    -1,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,    -1,    -1,    87,    88,
+      -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,   106,   107,   108,
-     109,   110,    -1,    -1,    -1,    -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,
+      -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,   152,    -1,   154,    -1,    -1,    -1,    -1,
-     159,    -1,    -1,    -1,    -1,    -1,   165,   166,   167,   168,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   180,   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,    36,    37,    -1,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,    -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,
+     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,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   152,    -1,   154,    -1,    -1,    -1,    -1,
-     159,    -1,    -1,    -1,    -1,    -1,   165,   166,   167,   168,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   180,   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,    36,    37,    -1,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,    -1,    -1,    87,    88,
+     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,    -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,
       -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,   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,
+      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,    -1,    -1,   152,    -1,   154,    -1,    -1,    -1,    -1,
-     159,    -1,    -1,    -1,    -1,    -1,   165,   166,   167,   168,
+     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,   180,   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,    36,    37,    -1,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      -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,    78,
+      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,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   152,    -1,   154,    -1,    -1,    -1,    -1,
-     159,    -1,    -1,    -1,    -1,    -1,   165,   166,   167,   168,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   180,   181,     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,    36,    37,    -1,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    84,    -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,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   152,    -1,   154,    -1,    -1,    -1,    -1,   159,
-      -1,    -1,    -1,    -1,    -1,   165,   166,   167,   168,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     180,   181,     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,    36,    37,    -1,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    82,    83,    84,    -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,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   152,    -1,   154,    -1,    -1,    -1,    -1,   159,    -1,
-      -1,    -1,    -1,    -1,   165,   166,   167,   168,     3,     4,
-       5,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,   180,
-     181,    -1,    -1,    -1,    -1,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    -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,   110,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     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,    -1,    -1,    -1,   152,    -1,   154,
-      -1,    -1,    -1,    -1,   159,    -1,    -1,    -1,    -1,    -1,
-     165,   166,   167,   168,     5,     6,     7,     8,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   180,    -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,   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,    -1,    -1,    -1,   107,   108,   109,    -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,    -1,    -1,
-      -1,    -1,    -1,     5,     6,     7,     8,    -1,    -1,    -1,
-      -1,   152,    -1,   154,    -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,   182,    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,     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,
       -1,    -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,   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,    -1,    -1,
-      -1,    -1,     5,     6,     7,     8,    -1,    -1,    -1,    -1,
-     152,    -1,   154,    -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,
-     182,    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,     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,    -1,   107,   108,   109,    -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,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   152,
-      -1,   154,    -1,    -1,    -1,    -1,   159,    -1,    -1,    -1,
-      -1,    -1,   165,   166,   167,   168,     3,     4,     5,     6,
-       7,     8,    -1,    -1,    -1,    -1,    -1,   180,    -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,    36,
-      37,    -1,    39,    40,    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,
@@ -1695,182 +1727,196 @@ static const yytype_int16 yycheck[] =
       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,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   152,    -1,   154,     5,     6,
-       7,     8,   159,    -1,    -1,    -1,    -1,    -1,   165,   166,
-     167,   168,    -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,   107,   108,   109,    -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,    -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,    -1,    -1,    -1,   152,    -1,   154,     5,     6,
-       7,     8,   159,    -1,    -1,   162,    -1,    -1,   165,   166,
-     167,   168,    -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,   107,   108,   109,    -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,    -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,    -1,    -1,   152,    -1,   154,     5,     6,
-       7,     8,   159,    -1,    -1,   162,    -1,    -1,   165,   166,
-     167,   168,    -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,   107,   108,   109,    -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,    -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,    -1,   152,    -1,   154,     5,     6,
-       7,     8,   159,    -1,    -1,   162,    -1,    -1,   165,   166,
-     167,   168,    -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,   107,   108,   109,    -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,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   152,    -1,   154,     5,     6,
-       7,     8,   159,    -1,    -1,    -1,    -1,    -1,   165,   166,
-     167,   168,    -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,
+     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,    -1,    -1,    -1,    -1,    -1,
-     107,   108,   109,    -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,
-      -1,    -1,    -1,    -1,    -1,   152,    -1,   154,    -1,    -1,
-      -1,    -1,   159,    -1,    -1,    -1,    -1,    -1,   165,   166,
-     167,   168,     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,    36,    37,    -1,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,    -1,    79,    -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,   106,   107,   108,   109,   110,
-      -1,    -1,    -1,    -1,    -1,     5,     6,     7,     8,    -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,
+       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,
+      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,    -1,    -1,
-      -1,   152,    -1,   154,    44,    45,    46,    47,    48,    49,
+      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,    -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,    -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,   152,    -1,   154,    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,     5,     6,     7,
+      -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,   152,    -1,   154,    44,    45,    46,    47,
+      -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,    -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,
+       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,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   152,    -1,   154
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   153,    -1,   155
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   111,   184,   186,    81,     0,   187,   116,   112,   185,
-     188,    79,     3,     4,     5,     6,     7,     8,    20,    21,
+       0,   111,   185,   187,    81,     0,   188,   116,   112,   186,
+     189,    79,     3,     4,     5,     6,     7,     8,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    79,   106,   107,   108,   109,
-     110,   152,   154,   189,   219,   220,   221,   222,   223,   228,
-     229,   230,   231,   233,   234,   235,   236,   237,   238,   239,
-     240,   266,   267,   115,    36,    37,    40,    79,   181,    79,
-     106,   233,   239,   266,   180,   181,   253,   160,   164,     4,
-      36,    37,    38,   225,   226,   232,   164,   180,    79,   233,
-     235,   161,   236,    79,   181,   235,   241,   242,   236,     9,
-      10,    11,    13,    14,    15,    16,    17,    18,    19,    78,
-      79,    80,    81,    82,    83,    84,    87,    88,   159,   165,
-     166,   167,   168,   180,   181,   182,   190,   191,   192,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   217,   219,   220,   235,   246,   247,   248,   249,   250,
-     251,   254,   255,   256,   257,   259,   260,   261,   265,   225,
-     224,   227,   235,   226,    79,   159,   161,   179,   162,   201,
-     214,   218,   235,   116,   241,    79,   243,   244,   182,   242,
-     180,   180,   180,   247,   159,   159,   180,   180,   217,   159,
-     217,   178,   159,   201,   201,   217,   182,   254,    87,    88,
-     161,   163,   160,   160,   164,    77,   215,   159,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   179,   216,
-     201,   169,   170,   171,   165,   166,    85,    86,    89,    90,
-     172,   173,    91,    92,   174,   175,   176,    93,    95,    94,
-     177,   164,   180,   182,   247,    79,   224,   227,   161,   179,
-     162,   218,   215,   245,   162,   182,   161,   164,   180,    78,
-     246,   255,   262,   217,   180,   217,   178,   217,   230,   258,
-     160,   182,   193,   217,    79,   196,   215,   215,   201,   201,
-     201,   203,   203,   204,   204,   205,   205,   205,   205,   206,
-     206,   207,   208,   209,   210,   211,   212,   217,   215,   161,
-     162,   218,   245,   179,   162,   218,   244,   159,   258,   263,
-     264,   160,   160,    79,   160,   162,   178,   218,   179,   162,
-     245,   179,   162,   217,   180,   160,   248,   249,   251,   179,
-      14,   250,   252,   253,   215,   162,   245,   179,   245,   160,
-     217,   252,    12,   245,   159,   245,   180,   248,   249,   217,
-     160,   248,    12
+      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,
+      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
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -2724,7 +2770,7 @@ yyreduce:
         case 2:
 
 /* Line 1455 of yacc.c  */
-#line 190 "glsl_parser.ypp"
+#line 193 "glsl_parser.ypp"
     {
           _mesa_glsl_initialize_types(state);
        ;}
@@ -2733,7 +2779,7 @@ yyreduce:
   case 4:
 
 /* Line 1455 of yacc.c  */
-#line 198 "glsl_parser.ypp"
+#line 201 "glsl_parser.ypp"
     {
           state->language_version = 110;
        ;}
@@ -2742,7 +2788,7 @@ yyreduce:
   case 5:
 
 /* Line 1455 of yacc.c  */
-#line 202 "glsl_parser.ypp"
+#line 205 "glsl_parser.ypp"
     {
           switch ((yyvsp[(2) - (3)].n)) {
           case 110:
@@ -2762,7 +2808,7 @@ yyreduce:
   case 8:
 
 /* Line 1455 of yacc.c  */
-#line 225 "glsl_parser.ypp"
+#line 228 "glsl_parser.ypp"
     {
           if (!_mesa_glsl_process_extension((yyvsp[(2) - (5)].identifier), & (yylsp[(2) - (5)]), (yyvsp[(4) - (5)].identifier), & (yylsp[(4) - (5)]), state)) {
              YYERROR;
@@ -2773,7 +2819,7 @@ yyreduce:
   case 9:
 
 /* Line 1455 of yacc.c  */
-#line 234 "glsl_parser.ypp"
+#line 237 "glsl_parser.ypp"
     {
           /* FINISHME: The NULL test is only required because 'precision'
            * FINISHME: statements are not yet supported.
@@ -2786,7 +2832,7 @@ yyreduce:
   case 10:
 
 /* Line 1455 of yacc.c  */
-#line 242 "glsl_parser.ypp"
+#line 245 "glsl_parser.ypp"
     {
           /* FINISHME: The NULL test is only required because 'precision'
            * FINISHME: statements are not yet supported.
@@ -2799,7 +2845,7 @@ yyreduce:
   case 12:
 
 /* Line 1455 of yacc.c  */
-#line 257 "glsl_parser.ypp"
+#line 260 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_identifier, NULL, NULL, NULL);
@@ -2811,7 +2857,7 @@ yyreduce:
   case 13:
 
 /* Line 1455 of yacc.c  */
-#line 264 "glsl_parser.ypp"
+#line 267 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_int_constant, NULL, NULL, NULL);
@@ -2823,7 +2869,7 @@ yyreduce:
   case 14:
 
 /* Line 1455 of yacc.c  */
-#line 271 "glsl_parser.ypp"
+#line 274 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_uint_constant, NULL, NULL, NULL);
@@ -2835,7 +2881,7 @@ yyreduce:
   case 15:
 
 /* Line 1455 of yacc.c  */
-#line 278 "glsl_parser.ypp"
+#line 281 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_float_constant, NULL, NULL, NULL);
@@ -2847,7 +2893,7 @@ yyreduce:
   case 16:
 
 /* Line 1455 of yacc.c  */
-#line 285 "glsl_parser.ypp"
+#line 288 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_bool_constant, NULL, NULL, NULL);
@@ -2859,7 +2905,7 @@ yyreduce:
   case 17:
 
 /* Line 1455 of yacc.c  */
-#line 292 "glsl_parser.ypp"
+#line 295 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(2) - (3)].expression);
        ;}
@@ -2868,7 +2914,7 @@ yyreduce:
   case 19:
 
 /* Line 1455 of yacc.c  */
-#line 300 "glsl_parser.ypp"
+#line 303 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_array_index, (yyvsp[(1) - (4)].expression), (yyvsp[(3) - (4)].expression), NULL);
@@ -2879,7 +2925,7 @@ yyreduce:
   case 20:
 
 /* Line 1455 of yacc.c  */
-#line 306 "glsl_parser.ypp"
+#line 309 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (1)].expression);
        ;}
@@ -2888,7 +2934,7 @@ yyreduce:
   case 21:
 
 /* Line 1455 of yacc.c  */
-#line 310 "glsl_parser.ypp"
+#line 313 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), NULL, NULL);
@@ -2900,7 +2946,7 @@ yyreduce:
   case 22:
 
 /* Line 1455 of yacc.c  */
-#line 317 "glsl_parser.ypp"
+#line 320 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_post_inc, (yyvsp[(1) - (2)].expression), NULL, NULL);
@@ -2911,7 +2957,7 @@ yyreduce:
   case 23:
 
 /* Line 1455 of yacc.c  */
-#line 323 "glsl_parser.ypp"
+#line 326 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_post_dec, (yyvsp[(1) - (2)].expression), NULL, NULL);
@@ -2922,7 +2968,7 @@ yyreduce:
   case 27:
 
 /* Line 1455 of yacc.c  */
-#line 341 "glsl_parser.ypp"
+#line 344 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL);
@@ -2933,7 +2979,7 @@ yyreduce:
   case 32:
 
 /* Line 1455 of yacc.c  */
-#line 360 "glsl_parser.ypp"
+#line 363 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (2)].expression);
           (yyval.expression)->set_location(yylloc);
@@ -2944,7 +2990,7 @@ yyreduce:
   case 33:
 
 /* Line 1455 of yacc.c  */
-#line 366 "glsl_parser.ypp"
+#line 369 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (3)].expression);
           (yyval.expression)->set_location(yylloc);
@@ -2955,7 +3001,7 @@ yyreduce:
   case 35:
 
 /* Line 1455 of yacc.c  */
-#line 382 "glsl_parser.ypp"
+#line 385 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_function_expression((yyvsp[(1) - (1)].type_specifier));
@@ -2966,7 +3012,7 @@ yyreduce:
   case 36:
 
 /* Line 1455 of yacc.c  */
-#line 388 "glsl_parser.ypp"
+#line 391 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier));
@@ -2978,7 +3024,7 @@ yyreduce:
   case 37:
 
 /* Line 1455 of yacc.c  */
-#line 395 "glsl_parser.ypp"
+#line 398 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier));
@@ -2990,7 +3036,7 @@ yyreduce:
   case 39:
 
 /* Line 1455 of yacc.c  */
-#line 407 "glsl_parser.ypp"
+#line 410 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_pre_inc, (yyvsp[(2) - (2)].expression), NULL, NULL);
@@ -3001,7 +3047,7 @@ yyreduce:
   case 40:
 
 /* Line 1455 of yacc.c  */
-#line 413 "glsl_parser.ypp"
+#line 416 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_pre_dec, (yyvsp[(2) - (2)].expression), NULL, NULL);
@@ -3012,7 +3058,7 @@ yyreduce:
   case 41:
 
 /* Line 1455 of yacc.c  */
-#line 419 "glsl_parser.ypp"
+#line 422 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression((yyvsp[(1) - (2)].n), (yyvsp[(2) - (2)].expression), NULL, NULL);
@@ -3023,35 +3069,35 @@ yyreduce:
   case 42:
 
 /* Line 1455 of yacc.c  */
-#line 428 "glsl_parser.ypp"
+#line 431 "glsl_parser.ypp"
     { (yyval.n) = ast_plus; ;}
     break;
 
   case 43:
 
 /* Line 1455 of yacc.c  */
-#line 429 "glsl_parser.ypp"
+#line 432 "glsl_parser.ypp"
     { (yyval.n) = ast_neg; ;}
     break;
 
   case 44:
 
 /* Line 1455 of yacc.c  */
-#line 430 "glsl_parser.ypp"
+#line 433 "glsl_parser.ypp"
     { (yyval.n) = ast_logic_not; ;}
     break;
 
   case 45:
 
 /* Line 1455 of yacc.c  */
-#line 431 "glsl_parser.ypp"
+#line 434 "glsl_parser.ypp"
     { (yyval.n) = ast_bit_not; ;}
     break;
 
   case 47:
 
 /* Line 1455 of yacc.c  */
-#line 437 "glsl_parser.ypp"
+#line 440 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_mul, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3062,7 +3108,7 @@ yyreduce:
   case 48:
 
 /* Line 1455 of yacc.c  */
-#line 443 "glsl_parser.ypp"
+#line 446 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_div, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3073,7 +3119,7 @@ yyreduce:
   case 49:
 
 /* Line 1455 of yacc.c  */
-#line 449 "glsl_parser.ypp"
+#line 452 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_mod, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3084,7 +3130,7 @@ yyreduce:
   case 51:
 
 /* Line 1455 of yacc.c  */
-#line 459 "glsl_parser.ypp"
+#line 462 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_add, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3095,7 +3141,7 @@ yyreduce:
   case 52:
 
 /* Line 1455 of yacc.c  */
-#line 465 "glsl_parser.ypp"
+#line 468 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_sub, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3106,7 +3152,7 @@ yyreduce:
   case 54:
 
 /* Line 1455 of yacc.c  */
-#line 475 "glsl_parser.ypp"
+#line 478 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_lshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3117,7 +3163,7 @@ yyreduce:
   case 55:
 
 /* Line 1455 of yacc.c  */
-#line 481 "glsl_parser.ypp"
+#line 484 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_rshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3128,7 +3174,7 @@ yyreduce:
   case 57:
 
 /* Line 1455 of yacc.c  */
-#line 491 "glsl_parser.ypp"
+#line 494 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_less, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3139,7 +3185,7 @@ yyreduce:
   case 58:
 
 /* Line 1455 of yacc.c  */
-#line 497 "glsl_parser.ypp"
+#line 500 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_greater, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3150,7 +3196,7 @@ yyreduce:
   case 59:
 
 /* Line 1455 of yacc.c  */
-#line 503 "glsl_parser.ypp"
+#line 506 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_lequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3161,7 +3207,7 @@ yyreduce:
   case 60:
 
 /* Line 1455 of yacc.c  */
-#line 509 "glsl_parser.ypp"
+#line 512 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_gequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3172,7 +3218,7 @@ yyreduce:
   case 62:
 
 /* Line 1455 of yacc.c  */
-#line 519 "glsl_parser.ypp"
+#line 522 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_equal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3183,7 +3229,7 @@ yyreduce:
   case 63:
 
 /* Line 1455 of yacc.c  */
-#line 525 "glsl_parser.ypp"
+#line 528 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_nequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3194,7 +3240,7 @@ yyreduce:
   case 65:
 
 /* Line 1455 of yacc.c  */
-#line 535 "glsl_parser.ypp"
+#line 538 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3205,7 +3251,7 @@ yyreduce:
   case 67:
 
 /* Line 1455 of yacc.c  */
-#line 545 "glsl_parser.ypp"
+#line 548 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3216,7 +3262,7 @@ yyreduce:
   case 69:
 
 /* Line 1455 of yacc.c  */
-#line 555 "glsl_parser.ypp"
+#line 558 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3227,7 +3273,7 @@ yyreduce:
   case 71:
 
 /* Line 1455 of yacc.c  */
-#line 565 "glsl_parser.ypp"
+#line 568 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3238,7 +3284,7 @@ yyreduce:
   case 73:
 
 /* Line 1455 of yacc.c  */
-#line 575 "glsl_parser.ypp"
+#line 578 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3249,7 +3295,7 @@ yyreduce:
   case 75:
 
 /* Line 1455 of yacc.c  */
-#line 585 "glsl_parser.ypp"
+#line 588 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3260,7 +3306,7 @@ yyreduce:
   case 77:
 
 /* Line 1455 of yacc.c  */
-#line 595 "glsl_parser.ypp"
+#line 598 "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));
@@ -3271,7 +3317,7 @@ yyreduce:
   case 79:
 
 /* Line 1455 of yacc.c  */
-#line 605 "glsl_parser.ypp"
+#line 608 "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);
@@ -3282,84 +3328,84 @@ yyreduce:
   case 80:
 
 /* Line 1455 of yacc.c  */
-#line 613 "glsl_parser.ypp"
+#line 616 "glsl_parser.ypp"
     { (yyval.n) = ast_assign; ;}
     break;
 
   case 81:
 
 /* Line 1455 of yacc.c  */
-#line 614 "glsl_parser.ypp"
+#line 617 "glsl_parser.ypp"
     { (yyval.n) = ast_mul_assign; ;}
     break;
 
   case 82:
 
 /* Line 1455 of yacc.c  */
-#line 615 "glsl_parser.ypp"
+#line 618 "glsl_parser.ypp"
     { (yyval.n) = ast_div_assign; ;}
     break;
 
   case 83:
 
 /* Line 1455 of yacc.c  */
-#line 616 "glsl_parser.ypp"
+#line 619 "glsl_parser.ypp"
     { (yyval.n) = ast_mod_assign; ;}
     break;
 
   case 84:
 
 /* Line 1455 of yacc.c  */
-#line 617 "glsl_parser.ypp"
+#line 620 "glsl_parser.ypp"
     { (yyval.n) = ast_add_assign; ;}
     break;
 
   case 85:
 
 /* Line 1455 of yacc.c  */
-#line 618 "glsl_parser.ypp"
+#line 621 "glsl_parser.ypp"
     { (yyval.n) = ast_sub_assign; ;}
     break;
 
   case 86:
 
 /* Line 1455 of yacc.c  */
-#line 619 "glsl_parser.ypp"
+#line 622 "glsl_parser.ypp"
     { (yyval.n) = ast_ls_assign; ;}
     break;
 
   case 87:
 
 /* Line 1455 of yacc.c  */
-#line 620 "glsl_parser.ypp"
+#line 623 "glsl_parser.ypp"
     { (yyval.n) = ast_rs_assign; ;}
     break;
 
   case 88:
 
 /* Line 1455 of yacc.c  */
-#line 621 "glsl_parser.ypp"
+#line 624 "glsl_parser.ypp"
     { (yyval.n) = ast_and_assign; ;}
     break;
 
   case 89:
 
 /* Line 1455 of yacc.c  */
-#line 622 "glsl_parser.ypp"
+#line 625 "glsl_parser.ypp"
     { (yyval.n) = ast_xor_assign; ;}
     break;
 
   case 90:
 
 /* Line 1455 of yacc.c  */
-#line 623 "glsl_parser.ypp"
+#line 626 "glsl_parser.ypp"
     { (yyval.n) = ast_or_assign; ;}
     break;
 
   case 91:
 
 /* Line 1455 of yacc.c  */
-#line 628 "glsl_parser.ypp"
+#line 631 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (1)].expression);
        ;}
@@ -3368,7 +3414,7 @@ yyreduce:
   case 92:
 
 /* Line 1455 of yacc.c  */
-#line 632 "glsl_parser.ypp"
+#line 635 "glsl_parser.ypp"
     {
           void *ctx = state;
           if ((yyvsp[(1) - (3)].expression)->oper != ast_sequence) {
@@ -3386,7 +3432,7 @@ yyreduce:
   case 94:
 
 /* Line 1455 of yacc.c  */
-#line 652 "glsl_parser.ypp"
+#line 655 "glsl_parser.ypp"
     {
           (yyval.node) = (yyvsp[(1) - (2)].function);
        ;}
@@ -3395,7 +3441,7 @@ yyreduce:
   case 95:
 
 /* Line 1455 of yacc.c  */
-#line 656 "glsl_parser.ypp"
+#line 659 "glsl_parser.ypp"
     {
           (yyval.node) = (yyvsp[(1) - (2)].declarator_list);
        ;}
@@ -3404,7 +3450,7 @@ yyreduce:
   case 96:
 
 /* Line 1455 of yacc.c  */
-#line 660 "glsl_parser.ypp"
+#line 663 "glsl_parser.ypp"
     {
           if (((yyvsp[(3) - (4)].type_specifier)->type_specifier != ast_float)
               && ((yyvsp[(3) - (4)].type_specifier)->type_specifier != ast_int)) {
@@ -3420,7 +3466,7 @@ yyreduce:
   case 100:
 
 /* Line 1455 of yacc.c  */
-#line 683 "glsl_parser.ypp"
+#line 686 "glsl_parser.ypp"
     {
           (yyval.function) = (yyvsp[(1) - (2)].function);
           (yyval.function)->parameters.push_tail(& (yyvsp[(2) - (2)].parameter_declarator)->link);
@@ -3430,7 +3476,7 @@ yyreduce:
   case 101:
 
 /* Line 1455 of yacc.c  */
-#line 688 "glsl_parser.ypp"
+#line 691 "glsl_parser.ypp"
     {
           (yyval.function) = (yyvsp[(1) - (3)].function);
           (yyval.function)->parameters.push_tail(& (yyvsp[(3) - (3)].parameter_declarator)->link);
@@ -3440,7 +3486,7 @@ yyreduce:
   case 102:
 
 /* Line 1455 of yacc.c  */
-#line 696 "glsl_parser.ypp"
+#line 699 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.function) = new(ctx) ast_function();
@@ -3453,7 +3499,7 @@ yyreduce:
   case 103:
 
 /* Line 1455 of yacc.c  */
-#line 707 "glsl_parser.ypp"
+#line 710 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3468,7 +3514,7 @@ yyreduce:
   case 104:
 
 /* Line 1455 of yacc.c  */
-#line 717 "glsl_parser.ypp"
+#line 720 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3485,7 +3531,7 @@ yyreduce:
   case 105:
 
 /* Line 1455 of yacc.c  */
-#line 732 "glsl_parser.ypp"
+#line 735 "glsl_parser.ypp"
     {
           (yyvsp[(1) - (3)].type_qualifier).i |= (yyvsp[(2) - (3)].type_qualifier).i;
 
@@ -3497,7 +3543,7 @@ yyreduce:
   case 106:
 
 /* Line 1455 of yacc.c  */
-#line 739 "glsl_parser.ypp"
+#line 742 "glsl_parser.ypp"
     {
           (yyval.parameter_declarator) = (yyvsp[(2) - (2)].parameter_declarator);
           (yyval.parameter_declarator)->type->qualifier = (yyvsp[(1) - (2)].type_qualifier).q;
@@ -3507,7 +3553,7 @@ yyreduce:
   case 107:
 
 /* Line 1455 of yacc.c  */
-#line 744 "glsl_parser.ypp"
+#line 747 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyvsp[(1) - (3)].type_qualifier).i |= (yyvsp[(2) - (3)].type_qualifier).i;
@@ -3523,7 +3569,7 @@ yyreduce:
   case 108:
 
 /* Line 1455 of yacc.c  */
-#line 755 "glsl_parser.ypp"
+#line 758 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3537,35 +3583,35 @@ yyreduce:
   case 109:
 
 /* Line 1455 of yacc.c  */
-#line 766 "glsl_parser.ypp"
+#line 769 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; ;}
     break;
 
   case 110:
 
 /* Line 1455 of yacc.c  */
-#line 767 "glsl_parser.ypp"
+#line 770 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.in = 1; ;}
     break;
 
   case 111:
 
 /* Line 1455 of yacc.c  */
-#line 768 "glsl_parser.ypp"
+#line 771 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.out = 1; ;}
     break;
 
   case 112:
 
 /* Line 1455 of yacc.c  */
-#line 769 "glsl_parser.ypp"
+#line 772 "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 779 "glsl_parser.ypp"
+#line 782 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (3)].identifier), false, NULL, NULL);
@@ -3579,7 +3625,7 @@ yyreduce:
   case 116:
 
 /* Line 1455 of yacc.c  */
-#line 788 "glsl_parser.ypp"
+#line 791 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), true, NULL, NULL);
@@ -3593,7 +3639,7 @@ yyreduce:
   case 117:
 
 /* Line 1455 of yacc.c  */
-#line 797 "glsl_parser.ypp"
+#line 800 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (6)].identifier), true, (yyvsp[(5) - (6)].expression), NULL);
@@ -3607,7 +3653,7 @@ yyreduce:
   case 118:
 
 /* Line 1455 of yacc.c  */
-#line 806 "glsl_parser.ypp"
+#line 809 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (7)].identifier), true, NULL, (yyvsp[(7) - (7)].expression));
@@ -3621,7 +3667,7 @@ yyreduce:
   case 119:
 
 /* Line 1455 of yacc.c  */
-#line 815 "glsl_parser.ypp"
+#line 818 "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));
@@ -3635,7 +3681,7 @@ yyreduce:
   case 120:
 
 /* Line 1455 of yacc.c  */
-#line 824 "glsl_parser.ypp"
+#line 827 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), false, NULL, (yyvsp[(5) - (5)].expression));
@@ -3649,7 +3695,7 @@ yyreduce:
   case 121:
 
 /* Line 1455 of yacc.c  */
-#line 837 "glsl_parser.ypp"
+#line 840 "glsl_parser.ypp"
     {
           void *ctx = state;
           if ((yyvsp[(1) - (1)].fully_specified_type)->specifier->type_specifier != ast_struct) {
@@ -3665,7 +3711,7 @@ yyreduce:
   case 122:
 
 /* Line 1455 of yacc.c  */
-#line 848 "glsl_parser.ypp"
+#line 851 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL);
@@ -3679,7 +3725,7 @@ yyreduce:
   case 123:
 
 /* Line 1455 of yacc.c  */
-#line 857 "glsl_parser.ypp"
+#line 860 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), true, NULL, NULL);
@@ -3693,7 +3739,7 @@ yyreduce:
   case 124:
 
 /* Line 1455 of yacc.c  */
-#line 866 "glsl_parser.ypp"
+#line 869 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (5)].identifier), true, (yyvsp[(4) - (5)].expression), NULL);
@@ -3707,7 +3753,7 @@ yyreduce:
   case 125:
 
 /* Line 1455 of yacc.c  */
-#line 875 "glsl_parser.ypp"
+#line 878 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (6)].identifier), true, NULL, (yyvsp[(6) - (6)].expression));
@@ -3721,7 +3767,7 @@ yyreduce:
   case 126:
 
 /* Line 1455 of yacc.c  */
-#line 884 "glsl_parser.ypp"
+#line 887 "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));
@@ -3735,7 +3781,7 @@ yyreduce:
   case 127:
 
 /* Line 1455 of yacc.c  */
-#line 893 "glsl_parser.ypp"
+#line 896 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
@@ -3749,7 +3795,7 @@ yyreduce:
   case 128:
 
 /* Line 1455 of yacc.c  */
-#line 902 "glsl_parser.ypp"
+#line 905 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL);
@@ -3765,7 +3811,7 @@ yyreduce:
   case 129:
 
 /* Line 1455 of yacc.c  */
-#line 916 "glsl_parser.ypp"
+#line 919 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
@@ -3777,7 +3823,7 @@ yyreduce:
   case 130:
 
 /* Line 1455 of yacc.c  */
-#line 923 "glsl_parser.ypp"
+#line 926 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
@@ -3790,127 +3836,188 @@ yyreduce:
   case 131:
 
 /* Line 1455 of yacc.c  */
-#line 933 "glsl_parser.ypp"
+#line 936 "glsl_parser.ypp"
+    { (yyval.type_qualifier).i = 0; ;}
+    break;
+
+  case 133:
+
+/* Line 1455 of yacc.c  */
+#line 942 "glsl_parser.ypp"
+    {
+         (yyval.type_qualifier) = (yyvsp[(3) - (4)].type_qualifier);
+       ;}
+    break;
+
+  case 135:
+
+/* Line 1455 of yacc.c  */
+#line 950 "glsl_parser.ypp"
+    {
+          (yyval.type_qualifier).i = (yyvsp[(1) - (3)].type_qualifier).i | (yyvsp[(3) - (3)].type_qualifier).i;
+       ;}
+    break;
+
+  case 136:
+
+/* Line 1455 of yacc.c  */
+#line 957 "glsl_parser.ypp"
+    {
+          (yyval.type_qualifier).i = 0;
+
+          if (state->ARB_fragment_coord_conventions_enable) {
+             bool got_one = false;
+
+             if (strcmp((yyvsp[(1) - (1)].identifier), "origin_upper_left") == 0) {
+                got_one = true;
+                (yyval.type_qualifier).q.origin_upper_left = 1;
+             } else if (strcmp((yyvsp[(1) - (1)].identifier), "pixel_center_integer") == 0) {
+                got_one = true;
+                (yyval.type_qualifier).q.pixel_center_integer = 1;
+             }
+
+             if (state->ARB_fragment_coord_conventions_warn && got_one) {
+                _mesa_glsl_warning(& (yylsp[(1) - (1)]), state,
+                                   "GL_ARB_fragment_coord_conventions layout "
+                                   "identifier `%s' used\n", (yyvsp[(1) - (1)].identifier));
+             }
+          }
+
+          /* If the identifier didn't match any known layout identifiers,
+           * emit an error.
+           */
+          if ((yyval.type_qualifier).i == 0) {
+             _mesa_glsl_error(& (yylsp[(1) - (1)]), state, "unrecognized layout identifier "
+                              "`%s'\n", (yyvsp[(1) - (1)].identifier));
+             YYERROR;
+          }
+       ;}
+    break;
+
+  case 137:
+
+/* Line 1455 of yacc.c  */
+#line 990 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.smooth = 1; ;}
     break;
 
-  case 132:
+  case 138:
 
 /* Line 1455 of yacc.c  */
-#line 934 "glsl_parser.ypp"
+#line 991 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.flat = 1; ;}
     break;
 
-  case 133:
+  case 139:
 
 /* Line 1455 of yacc.c  */
-#line 935 "glsl_parser.ypp"
+#line 992 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.noperspective = 1; ;}
     break;
 
-  case 134:
+  case 140:
 
 /* Line 1455 of yacc.c  */
-#line 939 "glsl_parser.ypp"
+#line 996 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.constant = 1; ;}
     break;
 
-  case 136:
+  case 142:
 
 /* Line 1455 of yacc.c  */
-#line 945 "glsl_parser.ypp"
+#line 1002 "glsl_parser.ypp"
     {
           (yyval.type_qualifier).i = (yyvsp[(1) - (2)].type_qualifier).i | (yyvsp[(2) - (2)].type_qualifier).i;
        ;}
     break;
 
-  case 137:
+  case 143:
 
 /* Line 1455 of yacc.c  */
-#line 949 "glsl_parser.ypp"
+#line 1006 "glsl_parser.ypp"
     {
           (yyval.type_qualifier) = (yyvsp[(2) - (2)].type_qualifier);
           (yyval.type_qualifier).q.invariant = 1;
        ;}
     break;
 
-  case 138:
+  case 144:
 
 /* Line 1455 of yacc.c  */
-#line 956 "glsl_parser.ypp"
+#line 1013 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.constant = 1; ;}
     break;
 
-  case 139:
+  case 145:
 
 /* Line 1455 of yacc.c  */
-#line 957 "glsl_parser.ypp"
+#line 1014 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.attribute = 1; ;}
     break;
 
-  case 140:
+  case 146:
 
 /* Line 1455 of yacc.c  */
-#line 958 "glsl_parser.ypp"
-    { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.varying = 1; ;}
+#line 1015 "glsl_parser.ypp"
+    { (yyval.type_qualifier).i = (yyvsp[(1) - (2)].type_qualifier).i; (yyval.type_qualifier).q.varying = 1; ;}
     break;
 
-  case 141:
+  case 147:
 
 /* Line 1455 of yacc.c  */
-#line 959 "glsl_parser.ypp"
+#line 1016 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.centroid = 1; (yyval.type_qualifier).q.varying = 1; ;}
     break;
 
-  case 142:
+  case 148:
 
 /* Line 1455 of yacc.c  */
-#line 960 "glsl_parser.ypp"
+#line 1017 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.in = 1; ;}
     break;
 
-  case 143:
+  case 149:
 
 /* Line 1455 of yacc.c  */
-#line 961 "glsl_parser.ypp"
+#line 1018 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.out = 1; ;}
     break;
 
-  case 144:
+  case 150:
 
 /* Line 1455 of yacc.c  */
-#line 962 "glsl_parser.ypp"
+#line 1019 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.centroid = 1; (yyval.type_qualifier).q.in = 1; ;}
     break;
 
-  case 145:
+  case 151:
 
 /* Line 1455 of yacc.c  */
-#line 963 "glsl_parser.ypp"
+#line 1020 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.centroid = 1; (yyval.type_qualifier).q.out = 1; ;}
     break;
 
-  case 146:
+  case 152:
 
 /* Line 1455 of yacc.c  */
-#line 964 "glsl_parser.ypp"
+#line 1021 "glsl_parser.ypp"
     { (yyval.type_qualifier).i = 0; (yyval.type_qualifier).q.uniform = 1; ;}
     break;
 
-  case 148:
+  case 154:
 
 /* Line 1455 of yacc.c  */
-#line 970 "glsl_parser.ypp"
+#line 1027 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(2) - (2)].type_specifier);
           (yyval.type_specifier)->precision = (yyvsp[(1) - (2)].n);
        ;}
     break;
 
-  case 150:
+  case 156:
 
 /* Line 1455 of yacc.c  */
-#line 979 "glsl_parser.ypp"
+#line 1036 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(1) - (3)].type_specifier);
           (yyval.type_specifier)->is_array = true;
@@ -3918,10 +4025,10 @@ yyreduce:
        ;}
     break;
 
-  case 151:
+  case 157:
 
 /* Line 1455 of yacc.c  */
-#line 985 "glsl_parser.ypp"
+#line 1042 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(1) - (4)].type_specifier);
           (yyval.type_specifier)->is_array = true;
@@ -3929,10 +4036,10 @@ yyreduce:
        ;}
     break;
 
-  case 152:
+  case 158:
 
 /* Line 1455 of yacc.c  */
-#line 994 "glsl_parser.ypp"
+#line 1051 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].n));
@@ -3940,10 +4047,10 @@ yyreduce:
        ;}
     break;
 
-  case 153:
+  case 159:
 
 /* Line 1455 of yacc.c  */
-#line 1000 "glsl_parser.ypp"
+#line 1057 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].struct_specifier));
@@ -3951,10 +4058,10 @@ yyreduce:
        ;}
     break;
 
-  case 154:
+  case 160:
 
 /* Line 1455 of yacc.c  */
-#line 1006 "glsl_parser.ypp"
+#line 1063 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].identifier));
@@ -3962,388 +4069,388 @@ yyreduce:
        ;}
     break;
 
-  case 155:
+  case 161:
 
 /* Line 1455 of yacc.c  */
-#line 1014 "glsl_parser.ypp"
+#line 1071 "glsl_parser.ypp"
     { (yyval.n) = ast_void; ;}
     break;
 
-  case 156:
+  case 162:
 
 /* Line 1455 of yacc.c  */
-#line 1015 "glsl_parser.ypp"
+#line 1072 "glsl_parser.ypp"
     { (yyval.n) = ast_float; ;}
     break;
 
-  case 157:
+  case 163:
 
 /* Line 1455 of yacc.c  */
-#line 1016 "glsl_parser.ypp"
+#line 1073 "glsl_parser.ypp"
     { (yyval.n) = ast_int; ;}
     break;
 
-  case 158:
+  case 164:
 
 /* Line 1455 of yacc.c  */
-#line 1017 "glsl_parser.ypp"
+#line 1074 "glsl_parser.ypp"
     { (yyval.n) = ast_uint; ;}
     break;
 
-  case 159:
+  case 165:
 
 /* Line 1455 of yacc.c  */
-#line 1018 "glsl_parser.ypp"
+#line 1075 "glsl_parser.ypp"
     { (yyval.n) = ast_bool; ;}
     break;
 
-  case 160:
+  case 166:
 
 /* Line 1455 of yacc.c  */
-#line 1019 "glsl_parser.ypp"
+#line 1076 "glsl_parser.ypp"
     { (yyval.n) = ast_vec2; ;}
     break;
 
-  case 161:
+  case 167:
 
 /* Line 1455 of yacc.c  */
-#line 1020 "glsl_parser.ypp"
+#line 1077 "glsl_parser.ypp"
     { (yyval.n) = ast_vec3; ;}
     break;
 
-  case 162:
+  case 168:
 
 /* Line 1455 of yacc.c  */
-#line 1021 "glsl_parser.ypp"
+#line 1078 "glsl_parser.ypp"
     { (yyval.n) = ast_vec4; ;}
     break;
 
-  case 163:
+  case 169:
 
 /* Line 1455 of yacc.c  */
-#line 1022 "glsl_parser.ypp"
+#line 1079 "glsl_parser.ypp"
     { (yyval.n) = ast_bvec2; ;}
     break;
 
-  case 164:
+  case 170:
 
 /* Line 1455 of yacc.c  */
-#line 1023 "glsl_parser.ypp"
+#line 1080 "glsl_parser.ypp"
     { (yyval.n) = ast_bvec3; ;}
     break;
 
-  case 165:
+  case 171:
 
 /* Line 1455 of yacc.c  */
-#line 1024 "glsl_parser.ypp"
+#line 1081 "glsl_parser.ypp"
     { (yyval.n) = ast_bvec4; ;}
     break;
 
-  case 166:
+  case 172:
 
 /* Line 1455 of yacc.c  */
-#line 1025 "glsl_parser.ypp"
+#line 1082 "glsl_parser.ypp"
     { (yyval.n) = ast_ivec2; ;}
     break;
 
-  case 167:
+  case 173:
 
 /* Line 1455 of yacc.c  */
-#line 1026 "glsl_parser.ypp"
+#line 1083 "glsl_parser.ypp"
     { (yyval.n) = ast_ivec3; ;}
     break;
 
-  case 168:
+  case 174:
 
 /* Line 1455 of yacc.c  */
-#line 1027 "glsl_parser.ypp"
+#line 1084 "glsl_parser.ypp"
     { (yyval.n) = ast_ivec4; ;}
     break;
 
-  case 169:
+  case 175:
 
 /* Line 1455 of yacc.c  */
-#line 1028 "glsl_parser.ypp"
+#line 1085 "glsl_parser.ypp"
     { (yyval.n) = ast_uvec2; ;}
     break;
 
-  case 170:
+  case 176:
 
 /* Line 1455 of yacc.c  */
-#line 1029 "glsl_parser.ypp"
+#line 1086 "glsl_parser.ypp"
     { (yyval.n) = ast_uvec3; ;}
     break;
 
-  case 171:
+  case 177:
 
 /* Line 1455 of yacc.c  */
-#line 1030 "glsl_parser.ypp"
+#line 1087 "glsl_parser.ypp"
     { (yyval.n) = ast_uvec4; ;}
     break;
 
-  case 172:
+  case 178:
 
 /* Line 1455 of yacc.c  */
-#line 1031 "glsl_parser.ypp"
+#line 1088 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2; ;}
     break;
 
-  case 173:
+  case 179:
 
 /* Line 1455 of yacc.c  */
-#line 1032 "glsl_parser.ypp"
+#line 1089 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3; ;}
     break;
 
-  case 174:
+  case 180:
 
 /* Line 1455 of yacc.c  */
-#line 1033 "glsl_parser.ypp"
+#line 1090 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4; ;}
     break;
 
-  case 175:
+  case 181:
 
 /* Line 1455 of yacc.c  */
-#line 1034 "glsl_parser.ypp"
+#line 1091 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2; ;}
     break;
 
-  case 176:
+  case 182:
 
 /* Line 1455 of yacc.c  */
-#line 1035 "glsl_parser.ypp"
+#line 1092 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2x3; ;}
     break;
 
-  case 177:
+  case 183:
 
 /* Line 1455 of yacc.c  */
-#line 1036 "glsl_parser.ypp"
+#line 1093 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2x4; ;}
     break;
 
-  case 178:
+  case 184:
 
 /* Line 1455 of yacc.c  */
-#line 1037 "glsl_parser.ypp"
+#line 1094 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3x2; ;}
     break;
 
-  case 179:
+  case 185:
 
 /* Line 1455 of yacc.c  */
-#line 1038 "glsl_parser.ypp"
+#line 1095 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3; ;}
     break;
 
-  case 180:
+  case 186:
 
 /* Line 1455 of yacc.c  */
-#line 1039 "glsl_parser.ypp"
+#line 1096 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3x4; ;}
     break;
 
-  case 181:
+  case 187:
 
 /* Line 1455 of yacc.c  */
-#line 1040 "glsl_parser.ypp"
+#line 1097 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4x2; ;}
     break;
 
-  case 182:
+  case 188:
 
 /* Line 1455 of yacc.c  */
-#line 1041 "glsl_parser.ypp"
+#line 1098 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4x3; ;}
     break;
 
-  case 183:
+  case 189:
 
 /* Line 1455 of yacc.c  */
-#line 1042 "glsl_parser.ypp"
+#line 1099 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4; ;}
     break;
 
-  case 184:
+  case 190:
 
 /* Line 1455 of yacc.c  */
-#line 1043 "glsl_parser.ypp"
+#line 1100 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1d; ;}
     break;
 
-  case 185:
+  case 191:
 
 /* Line 1455 of yacc.c  */
-#line 1044 "glsl_parser.ypp"
+#line 1101 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2d; ;}
     break;
 
-  case 186:
+  case 192:
 
 /* Line 1455 of yacc.c  */
-#line 1045 "glsl_parser.ypp"
+#line 1102 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2drect; ;}
     break;
 
-  case 187:
+  case 193:
 
 /* Line 1455 of yacc.c  */
-#line 1046 "glsl_parser.ypp"
+#line 1103 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler3d; ;}
     break;
 
-  case 188:
+  case 194:
 
 /* Line 1455 of yacc.c  */
-#line 1047 "glsl_parser.ypp"
+#line 1104 "glsl_parser.ypp"
     { (yyval.n) = ast_samplercube; ;}
     break;
 
-  case 189:
+  case 195:
 
 /* Line 1455 of yacc.c  */
-#line 1048 "glsl_parser.ypp"
+#line 1105 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1dshadow; ;}
     break;
 
-  case 190:
+  case 196:
 
 /* Line 1455 of yacc.c  */
-#line 1049 "glsl_parser.ypp"
+#line 1106 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2dshadow; ;}
     break;
 
-  case 191:
+  case 197:
 
 /* Line 1455 of yacc.c  */
-#line 1050 "glsl_parser.ypp"
+#line 1107 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2drectshadow; ;}
     break;
 
-  case 192:
+  case 198:
 
 /* Line 1455 of yacc.c  */
-#line 1051 "glsl_parser.ypp"
+#line 1108 "glsl_parser.ypp"
     { (yyval.n) = ast_samplercubeshadow; ;}
     break;
 
-  case 193:
+  case 199:
 
 /* Line 1455 of yacc.c  */
-#line 1052 "glsl_parser.ypp"
+#line 1109 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1darray; ;}
     break;
 
-  case 194:
+  case 200:
 
 /* Line 1455 of yacc.c  */
-#line 1053 "glsl_parser.ypp"
+#line 1110 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2darray; ;}
     break;
 
-  case 195:
+  case 201:
 
 /* Line 1455 of yacc.c  */
-#line 1054 "glsl_parser.ypp"
+#line 1111 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1darrayshadow; ;}
     break;
 
-  case 196:
+  case 202:
 
 /* Line 1455 of yacc.c  */
-#line 1055 "glsl_parser.ypp"
+#line 1112 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2darrayshadow; ;}
     break;
 
-  case 197:
+  case 203:
 
 /* Line 1455 of yacc.c  */
-#line 1056 "glsl_parser.ypp"
+#line 1113 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler1d; ;}
     break;
 
-  case 198:
+  case 204:
 
 /* Line 1455 of yacc.c  */
-#line 1057 "glsl_parser.ypp"
+#line 1114 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler2d; ;}
     break;
 
-  case 199:
+  case 205:
 
 /* Line 1455 of yacc.c  */
-#line 1058 "glsl_parser.ypp"
+#line 1115 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler3d; ;}
     break;
 
-  case 200:
+  case 206:
 
 /* Line 1455 of yacc.c  */
-#line 1059 "glsl_parser.ypp"
+#line 1116 "glsl_parser.ypp"
     { (yyval.n) = ast_isamplercube; ;}
     break;
 
-  case 201:
+  case 207:
 
 /* Line 1455 of yacc.c  */
-#line 1060 "glsl_parser.ypp"
+#line 1117 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler1darray; ;}
     break;
 
-  case 202:
+  case 208:
 
 /* Line 1455 of yacc.c  */
-#line 1061 "glsl_parser.ypp"
+#line 1118 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler2darray; ;}
     break;
 
-  case 203:
+  case 209:
 
 /* Line 1455 of yacc.c  */
-#line 1062 "glsl_parser.ypp"
+#line 1119 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler1d; ;}
     break;
 
-  case 204:
+  case 210:
 
 /* Line 1455 of yacc.c  */
-#line 1063 "glsl_parser.ypp"
+#line 1120 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler2d; ;}
     break;
 
-  case 205:
+  case 211:
 
 /* Line 1455 of yacc.c  */
-#line 1064 "glsl_parser.ypp"
+#line 1121 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler3d; ;}
     break;
 
-  case 206:
+  case 212:
 
 /* Line 1455 of yacc.c  */
-#line 1065 "glsl_parser.ypp"
+#line 1122 "glsl_parser.ypp"
     { (yyval.n) = ast_usamplercube; ;}
     break;
 
-  case 207:
+  case 213:
 
 /* Line 1455 of yacc.c  */
-#line 1066 "glsl_parser.ypp"
+#line 1123 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler1darray; ;}
     break;
 
-  case 208:
+  case 214:
 
 /* Line 1455 of yacc.c  */
-#line 1067 "glsl_parser.ypp"
+#line 1124 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler2darray; ;}
     break;
 
-  case 209:
+  case 215:
 
 /* Line 1455 of yacc.c  */
-#line 1071 "glsl_parser.ypp"
+#line 1128 "glsl_parser.ypp"
     {
                           if (state->language_version < 130)
                              _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4357,10 +4464,10 @@ yyreduce:
                        ;}
     break;
 
-  case 210:
+  case 216:
 
 /* Line 1455 of yacc.c  */
-#line 1082 "glsl_parser.ypp"
+#line 1139 "glsl_parser.ypp"
     {
                           if (state->language_version < 130)
                              _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4374,10 +4481,10 @@ yyreduce:
                        ;}
     break;
 
-  case 211:
+  case 217:
 
 /* Line 1455 of yacc.c  */
-#line 1093 "glsl_parser.ypp"
+#line 1150 "glsl_parser.ypp"
     {
                           if (state->language_version < 130)
                              _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4391,10 +4498,10 @@ yyreduce:
                        ;}
     break;
 
-  case 212:
+  case 218:
 
 /* Line 1455 of yacc.c  */
-#line 1108 "glsl_parser.ypp"
+#line 1165 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.struct_specifier) = new(ctx) ast_struct_specifier((yyvsp[(2) - (5)].identifier), (yyvsp[(4) - (5)].node));
@@ -4402,10 +4509,10 @@ yyreduce:
        ;}
     break;
 
-  case 213:
+  case 219:
 
 /* Line 1455 of yacc.c  */
-#line 1114 "glsl_parser.ypp"
+#line 1171 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.struct_specifier) = new(ctx) ast_struct_specifier(NULL, (yyvsp[(3) - (4)].node));
@@ -4413,30 +4520,30 @@ yyreduce:
        ;}
     break;
 
-  case 214:
+  case 220:
 
 /* Line 1455 of yacc.c  */
-#line 1123 "glsl_parser.ypp"
+#line 1180 "glsl_parser.ypp"
     {
           (yyval.node) = (struct ast_node *) (yyvsp[(1) - (1)].declarator_list);
           (yyvsp[(1) - (1)].declarator_list)->link.self_link();
        ;}
     break;
 
-  case 215:
+  case 221:
 
 /* Line 1455 of yacc.c  */
-#line 1128 "glsl_parser.ypp"
+#line 1185 "glsl_parser.ypp"
     {
           (yyval.node) = (struct ast_node *) (yyvsp[(1) - (2)].node);
           (yyval.node)->link.insert_before(& (yyvsp[(2) - (2)].declarator_list)->link);
        ;}
     break;
 
-  case 216:
+  case 222:
 
 /* Line 1455 of yacc.c  */
-#line 1136 "glsl_parser.ypp"
+#line 1193 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_fully_specified_type *type = new(ctx) ast_fully_specified_type();
@@ -4450,30 +4557,30 @@ yyreduce:
        ;}
     break;
 
-  case 217:
+  case 223:
 
 /* Line 1455 of yacc.c  */
-#line 1151 "glsl_parser.ypp"
+#line 1208 "glsl_parser.ypp"
     {
           (yyval.declaration) = (yyvsp[(1) - (1)].declaration);
           (yyvsp[(1) - (1)].declaration)->link.self_link();
        ;}
     break;
 
-  case 218:
+  case 224:
 
 /* Line 1455 of yacc.c  */
-#line 1156 "glsl_parser.ypp"
+#line 1213 "glsl_parser.ypp"
     {
           (yyval.declaration) = (yyvsp[(1) - (3)].declaration);
           (yyval.declaration)->link.insert_before(& (yyvsp[(3) - (3)].declaration)->link);
        ;}
     break;
 
-  case 219:
+  case 225:
 
 /* Line 1455 of yacc.c  */
-#line 1164 "glsl_parser.ypp"
+#line 1221 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (1)].identifier), false, NULL, NULL);
@@ -4481,10 +4588,10 @@ yyreduce:
        ;}
     break;
 
-  case 220:
+  case 226:
 
 /* Line 1455 of yacc.c  */
-#line 1170 "glsl_parser.ypp"
+#line 1227 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (4)].identifier), true, (yyvsp[(3) - (4)].expression), NULL);
@@ -4492,31 +4599,31 @@ yyreduce:
        ;}
     break;
 
-  case 225:
+  case 231:
 
 /* Line 1455 of yacc.c  */
-#line 1193 "glsl_parser.ypp"
+#line 1250 "glsl_parser.ypp"
     { (yyval.node) = (struct ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
     break;
 
-  case 231:
+  case 237:
 
 /* Line 1455 of yacc.c  */
-#line 1205 "glsl_parser.ypp"
+#line 1262 "glsl_parser.ypp"
     { (yyval.node) = NULL; ;}
     break;
 
-  case 232:
+  case 238:
 
 /* Line 1455 of yacc.c  */
-#line 1206 "glsl_parser.ypp"
+#line 1263 "glsl_parser.ypp"
     { (yyval.node) = NULL; ;}
     break;
 
-  case 235:
+  case 241:
 
 /* Line 1455 of yacc.c  */
-#line 1213 "glsl_parser.ypp"
+#line 1270 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(true, NULL);
@@ -4524,10 +4631,10 @@ yyreduce:
        ;}
     break;
 
-  case 236:
+  case 242:
 
 /* Line 1455 of yacc.c  */
-#line 1219 "glsl_parser.ypp"
+#line 1276 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[(2) - (3)].node));
@@ -4535,17 +4642,17 @@ yyreduce:
        ;}
     break;
 
-  case 237:
+  case 243:
 
 /* Line 1455 of yacc.c  */
-#line 1227 "glsl_parser.ypp"
+#line 1284 "glsl_parser.ypp"
     { (yyval.node) = (struct ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
     break;
 
-  case 239:
+  case 245:
 
 /* Line 1455 of yacc.c  */
-#line 1233 "glsl_parser.ypp"
+#line 1290 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(false, NULL);
@@ -4553,10 +4660,10 @@ yyreduce:
        ;}
     break;
 
-  case 240:
+  case 246:
 
 /* Line 1455 of yacc.c  */
-#line 1239 "glsl_parser.ypp"
+#line 1296 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(false, (yyvsp[(2) - (3)].node));
@@ -4564,10 +4671,10 @@ yyreduce:
        ;}
     break;
 
-  case 241:
+  case 247:
 
 /* Line 1455 of yacc.c  */
-#line 1248 "glsl_parser.ypp"
+#line 1305 "glsl_parser.ypp"
     {
           if ((yyvsp[(1) - (1)].node) == NULL) {
              _mesa_glsl_error(& (yylsp[(1) - (1)]), state, "<nil> statement\n");
@@ -4579,10 +4686,10 @@ yyreduce:
        ;}
     break;
 
-  case 242:
+  case 248:
 
 /* Line 1455 of yacc.c  */
-#line 1258 "glsl_parser.ypp"
+#line 1315 "glsl_parser.ypp"
     {
           if ((yyvsp[(2) - (2)].node) == NULL) {
              _mesa_glsl_error(& (yylsp[(2) - (2)]), state, "<nil> statement\n");
@@ -4593,10 +4700,10 @@ yyreduce:
        ;}
     break;
 
-  case 243:
+  case 249:
 
 /* Line 1455 of yacc.c  */
-#line 1270 "glsl_parser.ypp"
+#line 1327 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_expression_statement(NULL);
@@ -4604,10 +4711,10 @@ yyreduce:
        ;}
     break;
 
-  case 244:
+  case 250:
 
 /* Line 1455 of yacc.c  */
-#line 1276 "glsl_parser.ypp"
+#line 1333 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_expression_statement((yyvsp[(1) - (2)].expression));
@@ -4615,10 +4722,10 @@ yyreduce:
        ;}
     break;
 
-  case 245:
+  case 251:
 
 /* Line 1455 of yacc.c  */
-#line 1285 "glsl_parser.ypp"
+#line 1342 "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));
@@ -4626,10 +4733,10 @@ yyreduce:
        ;}
     break;
 
-  case 246:
+  case 252:
 
 /* Line 1455 of yacc.c  */
-#line 1294 "glsl_parser.ypp"
+#line 1351 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_selection_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].node), NULL);
@@ -4637,10 +4744,10 @@ yyreduce:
        ;}
     break;
 
-  case 247:
+  case 253:
 
 /* Line 1455 of yacc.c  */
-#line 1300 "glsl_parser.ypp"
+#line 1357 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_selection_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].node), NULL);
@@ -4648,10 +4755,10 @@ yyreduce:
        ;}
     break;
 
-  case 248:
+  case 254:
 
 /* Line 1455 of yacc.c  */
-#line 1306 "glsl_parser.ypp"
+#line 1363 "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));
@@ -4659,19 +4766,19 @@ yyreduce:
        ;}
     break;
 
-  case 249:
+  case 255:
 
 /* Line 1455 of yacc.c  */
-#line 1315 "glsl_parser.ypp"
+#line 1372 "glsl_parser.ypp"
     {
           (yyval.node) = (struct ast_node *) (yyvsp[(1) - (1)].expression);
        ;}
     break;
 
-  case 250:
+  case 256:
 
 /* Line 1455 of yacc.c  */
-#line 1319 "glsl_parser.ypp"
+#line 1376 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
@@ -4684,10 +4791,10 @@ yyreduce:
        ;}
     break;
 
-  case 254:
+  case 260:
 
 /* Line 1455 of yacc.c  */
-#line 1342 "glsl_parser.ypp"
+#line 1399 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_while,
@@ -4696,10 +4803,10 @@ yyreduce:
        ;}
     break;
 
-  case 255:
+  case 261:
 
 /* Line 1455 of yacc.c  */
-#line 1349 "glsl_parser.ypp"
+#line 1406 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_do_while,
@@ -4708,10 +4815,10 @@ yyreduce:
        ;}
     break;
 
-  case 256:
+  case 262:
 
 /* Line 1455 of yacc.c  */
-#line 1356 "glsl_parser.ypp"
+#line 1413 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_for,
@@ -4720,39 +4827,39 @@ yyreduce:
        ;}
     break;
 
-  case 260:
+  case 266:
 
 /* Line 1455 of yacc.c  */
-#line 1372 "glsl_parser.ypp"
+#line 1429 "glsl_parser.ypp"
     {
           (yyval.node) = NULL;
        ;}
     break;
 
-  case 261:
+  case 267:
 
 /* Line 1455 of yacc.c  */
-#line 1379 "glsl_parser.ypp"
+#line 1436 "glsl_parser.ypp"
     {
           (yyval.for_rest_statement).cond = (yyvsp[(1) - (2)].node);
           (yyval.for_rest_statement).rest = NULL;
        ;}
     break;
 
-  case 262:
+  case 268:
 
 /* Line 1455 of yacc.c  */
-#line 1384 "glsl_parser.ypp"
+#line 1441 "glsl_parser.ypp"
     {
           (yyval.for_rest_statement).cond = (yyvsp[(1) - (3)].node);
           (yyval.for_rest_statement).rest = (yyvsp[(3) - (3)].expression);
        ;}
     break;
 
-  case 263:
+  case 269:
 
 /* Line 1455 of yacc.c  */
-#line 1393 "glsl_parser.ypp"
+#line 1450 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_continue, NULL);
@@ -4760,10 +4867,10 @@ yyreduce:
        ;}
     break;
 
-  case 264:
+  case 270:
 
 /* Line 1455 of yacc.c  */
-#line 1399 "glsl_parser.ypp"
+#line 1456 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_break, NULL);
@@ -4771,10 +4878,10 @@ yyreduce:
        ;}
     break;
 
-  case 265:
+  case 271:
 
 /* Line 1455 of yacc.c  */
-#line 1405 "glsl_parser.ypp"
+#line 1462 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, NULL);
@@ -4782,10 +4889,10 @@ yyreduce:
        ;}
     break;
 
-  case 266:
+  case 272:
 
 /* Line 1455 of yacc.c  */
-#line 1411 "glsl_parser.ypp"
+#line 1468 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, (yyvsp[(2) - (3)].expression));
@@ -4793,10 +4900,10 @@ yyreduce:
        ;}
     break;
 
-  case 267:
+  case 273:
 
 /* Line 1455 of yacc.c  */
-#line 1417 "glsl_parser.ypp"
+#line 1474 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_discard, NULL);
@@ -4804,24 +4911,24 @@ yyreduce:
        ;}
     break;
 
-  case 268:
+  case 274:
 
 /* Line 1455 of yacc.c  */
-#line 1425 "glsl_parser.ypp"
+#line 1482 "glsl_parser.ypp"
     { (yyval.node) = (yyvsp[(1) - (1)].function_definition); ;}
     break;
 
-  case 269:
+  case 275:
 
 /* Line 1455 of yacc.c  */
-#line 1426 "glsl_parser.ypp"
+#line 1483 "glsl_parser.ypp"
     { (yyval.node) = (yyvsp[(1) - (1)].node); ;}
     break;
 
-  case 270:
+  case 276:
 
 /* Line 1455 of yacc.c  */
-#line 1431 "glsl_parser.ypp"
+#line 1488 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.function_definition) = new(ctx) ast_function_definition();
@@ -4834,7 +4941,7 @@ yyreduce:
 
 
 /* Line 1455 of yacc.c  */
-#line 4838 "glsl_parser.cpp"
+#line 4945 "glsl_parser.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
index 6cbab40557bd6ff6e079fce9446e6f8916ec08bc..9c4e12fd7ef2fddc43b9c5ce263e993521f7bed7 100644 (file)
      EOL = 371,
      INTERFACE = 372,
      OUTPUT = 373,
-     ASM = 374,
-     CLASS = 375,
-     UNION = 376,
-     ENUM = 377,
-     TYPEDEF = 378,
-     TEMPLATE = 379,
-     THIS = 380,
-     PACKED = 381,
-     GOTO = 382,
-     INLINE_TOK = 383,
-     NOINLINE = 384,
-     VOLATILE = 385,
-     PUBLIC_TOK = 386,
-     STATIC = 387,
-     EXTERN = 388,
-     EXTERNAL = 389,
-     LONG = 390,
-     SHORT = 391,
-     DOUBLE = 392,
-     HALF = 393,
-     FIXED = 394,
-     UNSIGNED = 395,
-     INPUT = 396,
-     OUPTUT = 397,
-     HVEC2 = 398,
-     HVEC3 = 399,
-     HVEC4 = 400,
-     DVEC2 = 401,
-     DVEC3 = 402,
-     DVEC4 = 403,
-     FVEC2 = 404,
-     FVEC3 = 405,
-     FVEC4 = 406,
-     SAMPLER2DRECT = 407,
-     SAMPLER3DRECT = 408,
-     SAMPLER2DRECTSHADOW = 409,
-     SIZEOF = 410,
-     CAST = 411,
-     NAMESPACE = 412,
-     USING = 413
+     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
    };
 #endif
 
@@ -236,7 +237,7 @@ typedef union YYSTYPE
 
 
 /* Line 1676 of yacc.c  */
-#line 240 "glsl_parser.h"
+#line 241 "glsl_parser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index 6782255d45cd4f5f89db2f0bc9e24056de715cac..53132d9067ddf6608e10c0d6449188c32b9524c0 100644 (file)
@@ -97,6 +97,7 @@
 %token LOWP MEDIUMP HIGHP PRECISION
 
 %token VERSION EXTENSION LINE PRAGMA COLON EOL INTERFACE OUTPUT
+%token LAYOUT_TOK
 
    /* Reserved words that are not actually used in the grammar.
     */
 %type <type_qualifier> type_qualifier
 %type <type_qualifier> storage_qualifier
 %type <type_qualifier> interpolation_qualifier
+%type <type_qualifier> opt_layout_qualifier layout_qualifier
+%type <type_qualifier> layout_qualifier_id_list layout_qualifier_id
 %type <type_specifier> type_specifier
 %type <type_specifier> type_specifier_no_prec
 %type <type_specifier> type_specifier_nonarray
@@ -929,6 +932,60 @@ fully_specified_type:
        }
        ;
 
+opt_layout_qualifier:
+       { $$.i = 0; }
+       |  layout_qualifier
+       ;
+
+layout_qualifier:
+       LAYOUT_TOK '(' layout_qualifier_id_list ')'
+       {
+         $$ = $3;
+       }
+       ;
+
+layout_qualifier_id_list:
+       layout_qualifier_id
+       | layout_qualifier_id_list ',' layout_qualifier_id
+       {
+          $$.i = $1.i | $3.i;
+       }
+       ;
+
+layout_qualifier_id:
+       IDENTIFIER
+       {
+          $$.i = 0;
+
+          if (state->ARB_fragment_coord_conventions_enable) {
+             bool got_one = false;
+
+             if (strcmp($1, "origin_upper_left") == 0) {
+                got_one = true;
+                $$.q.origin_upper_left = 1;
+             } else if (strcmp($1, "pixel_center_integer") == 0) {
+                got_one = true;
+                $$.q.pixel_center_integer = 1;
+             }
+
+             if (state->ARB_fragment_coord_conventions_warn && got_one) {
+                _mesa_glsl_warning(& @1, state,
+                                   "GL_ARB_fragment_coord_conventions layout "
+                                   "identifier `%s' used\n", $1);
+             }
+          }
+
+          /* If the identifier didn't match any known layout identifiers,
+           * emit an error.
+           */
+          if ($$.i == 0) {
+             _mesa_glsl_error(& @1, state, "unrecognized layout identifier "
+                              "`%s'\n", $1);
+             YYERROR;
+          }
+       }
+       ;
+
 interpolation_qualifier:
        SMOOTH          { $$.i = 0; $$.q.smooth = 1; }
        | FLAT          { $$.i = 0; $$.q.flat = 1; }
@@ -955,9 +1012,9 @@ type_qualifier:
 storage_qualifier:
        CONST_TOK               { $$.i = 0; $$.q.constant = 1; }
        | ATTRIBUTE             { $$.i = 0; $$.q.attribute = 1; }
-       | VARYING               { $$.i = 0; $$.q.varying = 1; }
+       | opt_layout_qualifier VARYING  { $$.i = $1.i; $$.q.varying = 1; }
        | CENTROID VARYING      { $$.i = 0; $$.q.centroid = 1; $$.q.varying = 1; }
-       | IN                    { $$.i = 0; $$.q.in = 1; }
+       | opt_layout_qualifier IN       { $$.i = 0; $$.q.in = 1; }
        | OUT                   { $$.i = 0; $$.q.out = 1; }
        | CENTROID IN           { $$.i = 0; $$.q.centroid = 1; $$.q.in = 1; }
        | CENTROID OUT          { $$.i = 0; $$.q.centroid = 1; $$.q.out = 1; }
index 009aabcd354677d64f8bcf062d0e4212fffb33e2..20a5021b1469d5661765e1cb8a5318841607d932 100644 (file)
@@ -198,6 +198,13 @@ _mesa_glsl_process_extension(const char *name, YYLTYPE *name_locp,
         state->ARB_draw_buffers_enable = (ext_mode != extension_disable);
         state->ARB_draw_buffers_warn = (ext_mode == extension_warn);
       }
+   } else if (strcmp(name, "GL_ARB_fragment_coord_conventions") == 0) {
+      state->ARB_fragment_coord_conventions_enable =
+        (ext_mode != extension_disable);
+      state->ARB_fragment_coord_conventions_warn =
+        (ext_mode == extension_warn);
+
+      unsupported = !state->extensions->ARB_fragment_coord_conventions;
    } else if (strcmp(name, "GL_ARB_texture_rectangle") == 0) {
       state->ARB_texture_rectangle_enable = (ext_mode != extension_disable);
       state->ARB_texture_rectangle_warn = (ext_mode == extension_warn);
index 3865843fd104a4f428ca0c7716dd4787f3699ad0..3b53ba07f682c14fc464f6e57b54c024592462e8 100644 (file)
@@ -118,6 +118,8 @@ struct _mesa_glsl_parse_state {
    /*@{*/
    unsigned ARB_draw_buffers_enable:1;
    unsigned ARB_draw_buffers_warn:1;
+   unsigned ARB_fragment_coord_conventions_enable:1;
+   unsigned ARB_fragment_coord_conventions_warn:1;
    unsigned ARB_texture_rectangle_enable:1;
    unsigned ARB_texture_rectangle_warn:1;
    unsigned EXT_texture_array_enable:1;