[Scummvm-git-logs] scummvm master -> e66961e1defaf2e358742d5d310a7efe996eae69

sev- sev at scummvm.org
Mon Jan 23 19:40:07 CET 2017


This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
a1a42d3116 DIRECTOR: Lingo: Fix 57 more reduce/reduce conflicts in the grammar.
b7e937a2d5 DIRECTOR: Lingo: Fix macro grammar parcing. Removes 2 more reduce/reduce
6d4bbc1586 DIRECTOR: Lingo: Clarified macro grammar.
83ab1fc441 DIRECTOR: Lingo: Fix all remaining reduce/reduce conflicts
e66961e1de JANITORIAL: Whitespace fixes


Commit: a1a42d31168f1b9e2db4d23ded16a7a5c41a5d1f
    https://github.com/scummvm/scummvm/commit/a1a42d31168f1b9e2db4d23ded16a7a5c41a5d1f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-23T19:39:50+01:00

Commit Message:
DIRECTOR: Lingo: Fix 57 more reduce/reduce conflicts in the grammar.

8 to go.
There was incorrect parsing for put..after command.

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index ca89e5b..3271838 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -520,16 +520,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  112
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1581
+#define YYLAST   1548
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  96
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  40
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  152
+#define YYNRULES  151
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  333
+#define YYNSTATES  331
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -590,14 +590,14 @@ static const yytype_uint16 yyprhs[] =
      224,   226,   227,   228,   229,   232,   235,   239,   241,   243,
      245,   247,   249,   254,   256,   258,   261,   263,   267,   271,
      275,   279,   283,   287,   291,   295,   299,   303,   307,   311,
-     314,   318,   322,   326,   330,   334,   337,   340,   344,   348,
-     353,   358,   363,   370,   375,   382,   387,   394,   399,   406,
-     409,   411,   413,   416,   418,   421,   424,   427,   430,   432,
-     437,   440,   445,   452,   457,   460,   464,   466,   470,   472,
-     476,   479,   482,   485,   488,   492,   495,   498,   500,   504,
-     507,   510,   513,   517,   520,   521,   525,   526,   535,   538,
-     539,   548,   549,   550,   561,   562,   564,   568,   573,   574,
-     578,   579,   581
+     314,   318,   322,   326,   330,   333,   336,   340,   344,   349,
+     354,   359,   366,   371,   378,   383,   390,   395,   402,   405,
+     407,   409,   412,   414,   417,   420,   423,   426,   428,   433,
+     436,   441,   448,   453,   456,   460,   462,   466,   468,   472,
+     475,   478,   481,   484,   488,   491,   494,   496,   500,   503,
+     506,   509,   513,   516,   517,   521,   522,   531,   534,   535,
+     544,   545,   546,   557,   558,   560,   564,   569,   570,   574,
+     575,   577
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -634,34 +634,34 @@ static const yytype_int16 yyrhs[] =
       66,   118,    -1,   118,    91,   118,    -1,   118,    92,   118,
       -1,   118,    62,   118,    -1,   118,    57,   118,    -1,   118,
       58,   118,    -1,   118,    63,   118,    -1,   118,    64,   118,
-      -1,    65,   118,    -1,   118,    82,   118,    -1,   118,    67,
-     118,    -1,   118,    69,   118,    -1,   118,    70,   118,    -1,
-     118,    71,   118,    -1,    83,   118,    -1,    84,   118,    -1,
-      89,   118,    90,    -1,    93,   135,    94,    -1,    76,   118,
-      77,   118,    -1,    76,   118,    78,   118,    -1,    72,   118,
-      40,   118,    -1,    72,   118,    46,   118,    40,   118,    -1,
-      73,   118,    40,   118,    -1,    73,   118,    46,   118,    40,
-     118,    -1,    74,   118,    40,   118,    -1,    74,   118,    46,
-     118,    40,   118,    -1,    75,   118,    40,   118,    -1,    75,
-     118,    46,   118,    40,   118,    -1,    42,   118,    -1,   122,
-      -1,   125,    -1,    30,    43,    -1,    30,    -1,    32,   120,
-      -1,    56,   121,    -1,    18,   118,    -1,    17,   118,    -1,
-      17,    -1,    19,    89,   135,    90,    -1,    19,   135,    -1,
-      80,    89,    21,    90,    -1,    80,    89,    21,    95,   135,
-      90,    -1,    53,   118,    48,   118,    -1,    53,   118,    -1,
-      20,    21,   135,    -1,    21,    -1,   120,    95,    21,    -1,
-      21,    -1,   121,    95,    21,    -1,    33,    36,    -1,    33,
-      39,    -1,    33,    41,    -1,    33,   123,    -1,    33,   123,
-     124,    -1,    33,   124,    -1,    31,   118,    -1,   118,    -1,
-      40,    38,   118,    -1,    38,   118,    -1,    54,    55,    -1,
-      54,   123,    -1,    54,   123,   124,    -1,    54,   124,    -1,
-      -1,    26,   126,   135,    -1,    -1,    37,    21,   128,   114,
-     132,    98,   133,   116,    -1,    51,    21,    -1,    -1,    52,
-      21,   129,   114,   132,    98,   133,   116,    -1,    -1,    -1,
-      79,    21,   130,   114,   131,   132,    98,   133,   116,    25,
-      -1,    -1,    21,    -1,   132,    95,    21,    -1,   132,    98,
-      95,    21,    -1,    -1,    21,   114,   135,    -1,    -1,   118,
-      -1,   135,    95,   118,    -1
+      -1,    65,   118,    -1,   118,    82,   118,    -1,   118,    69,
+     118,    -1,   118,    70,   118,    -1,   118,    71,   118,    -1,
+      83,   118,    -1,    84,   118,    -1,    89,   118,    90,    -1,
+      93,   135,    94,    -1,    76,   118,    77,   118,    -1,    76,
+     118,    78,   118,    -1,    72,   118,    40,   118,    -1,    72,
+     118,    46,   118,    40,   118,    -1,    73,   118,    40,   118,
+      -1,    73,   118,    46,   118,    40,   118,    -1,    74,   118,
+      40,   118,    -1,    74,   118,    46,   118,    40,   118,    -1,
+      75,   118,    40,   118,    -1,    75,   118,    46,   118,    40,
+     118,    -1,    42,   118,    -1,   122,    -1,   125,    -1,    30,
+      43,    -1,    30,    -1,    32,   120,    -1,    56,   121,    -1,
+      18,   118,    -1,    17,   118,    -1,    17,    -1,    19,    89,
+     135,    90,    -1,    19,   135,    -1,    80,    89,    21,    90,
+      -1,    80,    89,    21,    95,   135,    90,    -1,    53,   118,
+      48,   118,    -1,    53,   118,    -1,    20,    21,   135,    -1,
+      21,    -1,   120,    95,    21,    -1,    21,    -1,   121,    95,
+      21,    -1,    33,    36,    -1,    33,    39,    -1,    33,    41,
+      -1,    33,   123,    -1,    33,   123,   124,    -1,    33,   124,
+      -1,    31,   118,    -1,   118,    -1,    40,    38,   118,    -1,
+      38,   118,    -1,    54,    55,    -1,    54,   123,    -1,    54,
+     123,   124,    -1,    54,   124,    -1,    -1,    26,   126,   135,
+      -1,    -1,    37,    21,   128,   114,   132,    98,   133,   116,
+      -1,    51,    21,    -1,    -1,    52,    21,   129,   114,   132,
+      98,   133,   116,    -1,    -1,    -1,    79,    21,   130,   114,
+     131,   132,    98,   133,   116,    25,    -1,    -1,    21,    -1,
+     132,    95,    21,    -1,   132,    98,    95,    21,    -1,    -1,
+      21,   114,   135,    -1,    -1,   118,    -1,   135,    95,   118,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -676,13 +676,13 @@ static const yytype_uint16 yyrline[] =
      391,   394,   397,   400,   404,   411,   417,   418,   419,   420,
      421,   422,   423,   424,   425,   426,   427,   428,   429,   430,
      431,   432,   433,   434,   435,   436,   437,   438,   439,   440,
-     441,   442,   443,   444,   445,   446,   447,   448,   449,   452,
-     453,   454,   455,   456,   458,   459,   460,   463,   466,   469,
-     470,   471,   472,   473,   474,   475,   478,   479,   482,   483,
-     494,   495,   496,   497,   500,   503,   508,   509,   512,   513,
-     516,   517,   520,   523,   526,   526,   556,   556,   562,   565,
-     565,   570,   571,   570,   581,   582,   583,   584,   586,   590,
-     598,   599,   600
+     441,   442,   443,   444,   445,   446,   447,   448,   451,   452,
+     453,   454,   455,   457,   458,   459,   462,   465,   468,   469,
+     470,   471,   472,   473,   474,   477,   478,   481,   482,   493,
+     494,   495,   496,   499,   502,   507,   508,   511,   512,   515,
+     516,   519,   522,   525,   525,   555,   555,   561,   564,   564,
+     569,   570,   569,   580,   581,   582,   583,   585,   589,   597,
+     598,   599
 };
 #endif
 
@@ -745,13 +745,13 @@ static const yytype_uint8 yyr1[] =
      118,   118,   118,   118,   118,   118,   118,   118,   118,   118,
      118,   118,   118,   118,   118,   118,   118,   118,   118,   118,
      118,   118,   118,   118,   118,   118,   118,   118,   118,   118,
-     118,   118,   118,   118,   118,   118,   118,   118,   118,   119,
+     118,   118,   118,   118,   118,   118,   118,   118,   119,   119,
      119,   119,   119,   119,   119,   119,   119,   119,   119,   119,
-     119,   119,   119,   119,   119,   119,   120,   120,   121,   121,
-     122,   122,   122,   122,   122,   122,   123,   123,   124,   124,
-     125,   125,   125,   125,   126,   125,   128,   127,   127,   129,
-     127,   130,   131,   127,   132,   132,   132,   132,   133,   134,
-     135,   135,   135
+     119,   119,   119,   119,   119,   120,   120,   121,   121,   122,
+     122,   122,   122,   122,   122,   123,   123,   124,   124,   125,
+     125,   125,   125,   126,   125,   128,   127,   127,   129,   127,
+     130,   131,   127,   132,   132,   132,   132,   133,   134,   135,
+     135,   135
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -765,14 +765,14 @@ static const yytype_uint8 yyr2[] =
        1,     0,     0,     0,     2,     2,     3,     1,     1,     1,
        1,     1,     4,     1,     1,     2,     1,     3,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     2,
-       3,     3,     3,     3,     3,     2,     2,     3,     3,     4,
-       4,     4,     6,     4,     6,     4,     6,     4,     6,     2,
-       1,     1,     2,     1,     2,     2,     2,     2,     1,     4,
-       2,     4,     6,     4,     2,     3,     1,     3,     1,     3,
-       2,     2,     2,     2,     3,     2,     2,     1,     3,     2,
-       2,     2,     3,     2,     0,     3,     0,     8,     2,     0,
-       8,     0,     0,    10,     0,     1,     3,     4,     0,     3,
-       0,     1,     3
+       3,     3,     3,     3,     2,     2,     3,     3,     4,     4,
+       4,     6,     4,     6,     4,     6,     4,     6,     2,     1,
+       1,     2,     1,     2,     2,     2,     2,     1,     4,     2,
+       4,     6,     4,     2,     3,     1,     3,     1,     3,     2,
+       2,     2,     2,     3,     2,     2,     1,     3,     2,     2,
+       2,     3,     2,     0,     3,     0,     8,     2,     0,     8,
+       0,     0,    10,     0,     1,     3,     4,     0,     3,     0,
+       1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -780,99 +780,99 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    57,    64,     0,    58,    61,   108,     0,   150,
-       0,    51,    60,    59,   134,   103,     0,     0,    49,     0,
+       0,     0,    57,    64,     0,    58,    61,   107,     0,   149,
+       0,    51,    60,    59,   133,   102,     0,     0,    49,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     150,     0,     3,    66,    23,    11,    24,     0,     0,     0,
-       0,    21,     8,   100,   101,     7,     9,     5,     4,    63,
-       0,    66,    65,   107,   106,   150,   151,   110,   150,   150,
-     150,   150,   102,   116,   104,     0,   120,     0,   121,     0,
-     122,   127,   123,   125,   136,    99,     0,    47,     0,     0,
-       0,     0,   138,   139,   114,   130,   131,   133,   118,   105,
-      79,     0,     0,     0,     0,     0,   141,     0,    85,    86,
+     149,     0,     3,    66,    23,    11,    24,     0,     0,     0,
+       0,    21,     8,    99,   100,     7,     9,     5,     4,    63,
+       0,    66,    65,   106,   105,   149,   150,   109,   149,   149,
+     149,   149,   101,   115,   103,     0,   119,     0,   120,     0,
+     121,   126,   122,   124,   135,    98,     0,    47,     0,     0,
+       0,     0,   137,   138,   113,   129,   130,   132,   117,   104,
+      79,     0,     0,     0,     0,     0,   140,     0,    84,    85,
        0,     0,     1,     6,     0,     0,     0,     0,    44,    52,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   151,     0,
-       0,   115,     0,   149,   135,     0,   126,   129,     0,   124,
-      51,     0,     0,     0,    48,     0,     0,     0,     0,     0,
-      56,    51,     0,   132,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    51,     0,    87,    88,     2,
-       0,    52,     0,     0,    51,     0,    28,    75,    76,    74,
-      77,    78,    71,    81,    82,    83,    84,    80,    67,    68,
-      69,    70,    72,    73,   109,   152,    62,   117,   128,   144,
-      12,    13,    14,    19,    16,     0,     0,    18,    15,   144,
-     113,   119,    91,     0,    93,     0,    95,     0,    97,     0,
-      89,    90,   142,   111,   150,    53,     0,    46,    53,     0,
-      45,   145,     0,    20,    17,     0,     0,     0,     0,     0,
-     144,     0,    52,     0,     0,    52,    52,    22,     0,   148,
-     148,    92,    94,    96,    98,     0,   112,    54,    55,     0,
-       0,    52,    51,    32,   146,     0,    53,    53,   148,    25,
-      52,    53,    29,    53,     0,    50,    51,    52,    40,     0,
-     147,   137,   140,    53,    53,    52,    52,    52,    42,    38,
-       0,     0,    39,    35,     0,     0,    52,     0,     0,    37,
-       0,     0,    52,    51,    52,    51,   143,     0,    26,    30,
-      31,    51,    33,     0,    34,     0,    27,    53,    36,    52,
-      52,    41,    43
+       0,     0,     0,     0,     0,     0,     0,   150,     0,     0,
+     114,     0,   148,   134,     0,   125,   128,     0,   123,    51,
+       0,     0,     0,    48,     0,     0,     0,     0,     0,    56,
+      51,     0,   131,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    51,     0,    86,    87,     2,     0,
+      52,     0,     0,    51,     0,    28,    75,    76,    74,    77,
+      78,    71,    81,    82,    83,    80,    67,    68,    69,    70,
+      72,    73,   108,   151,    62,   116,   127,   143,    12,    13,
+      14,    19,    16,     0,     0,    18,    15,   143,   112,   118,
+      90,     0,    92,     0,    94,     0,    96,     0,    88,    89,
+     141,   110,   149,    53,     0,    46,    53,     0,    45,   144,
+       0,    20,    17,     0,     0,     0,     0,     0,   143,     0,
+      52,     0,     0,    52,    52,    22,     0,   147,   147,    91,
+      93,    95,    97,     0,   111,    54,    55,     0,     0,    52,
+      51,    32,   145,     0,    53,    53,   147,    25,    52,    53,
+      29,    53,     0,    50,    51,    52,    40,     0,   146,   136,
+     139,    53,    53,    52,    52,    52,    42,    38,     0,     0,
+      39,    35,     0,     0,    52,     0,     0,    37,     0,     0,
+      52,    51,    52,    51,   142,     0,    26,    30,    31,    51,
+      33,     0,    34,     0,    27,    53,    36,    52,    52,    41,
+      43
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    41,   267,    42,    61,    44,   268,    46,   314,   297,
-     298,   288,   299,   117,    47,    48,    49,   289,    70,   186,
-     252,    50,    51,   257,    74,    99,    53,    82,    83,    54,
-      71,    55,   150,   161,   175,   250,   242,   276,    56,    67
+      -1,    41,   265,    42,    61,    44,   266,    46,   312,   295,
+     296,   286,   297,   117,    47,    48,    49,   287,    70,   185,
+     250,    50,    51,   255,    74,    99,    53,    82,    83,    54,
+      71,    55,   149,   160,   174,   248,   240,   274,    56,    67
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -269
+#define YYPACT_NINF -271
 static const yytype_int16 yypact[] =
 {
-     322,   -68,  -269,  -269,   220,  -269,  -269,   220,   220,   912,
-       5,  1489,  -269,  -269,  -269,   -20,    35,   811,  -269,    38,
-     220,    33,    97,    42,    76,    79,   220,   877,    86,   220,
-     220,   220,   220,   220,   220,    93,    53,   220,   220,   220,
-     220,     4,  -269,    13,  -269,  -269,  -269,    59,    69,   978,
-     220,  1458,  -269,  -269,  -269,  -269,  -269,  -269,  -269,    62,
-     220,  -269,  1458,  1458,  1458,   220,  1458,    57,   220,   220,
-     220,   220,  -269,  -269,    60,   220,  -269,   220,  -269,   120,
-    -269,  1458,    56,  -269,  -269,   946,   140,  -269,   -44,   220,
-     -32,   117,  -269,  -269,  1303,  -269,    56,  -269,  -269,    82,
-     121,  1017,  1049,  1081,  1113,  1334,  -269,   143,   121,   121,
-    1396,    52,  -269,   405,   978,   220,   978,   133,  1427,  1458,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   946,  1396,   -30,
-     220,    57,    48,    57,    57,   159,  1458,  1458,   220,  -269,
-    -269,   160,   220,   220,  -269,   220,   220,  1272,   220,   220,
-    -269,  -269,   220,  -269,   161,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,  -269,    49,  -269,  -269,  -269,
-      94,  1458,    95,  1365,   -68,   220,  -269,    20,    20,    20,
-     121,   121,   121,  1458,  1458,    20,    20,   135,   294,   294,
-     121,   121,  1458,  1458,  -269,  1458,  -269,  -269,  1458,   168,
-    -269,  1458,  1458,  1458,  1458,   220,   220,  1458,  1458,   168,
-    1458,  -269,  1458,  1145,  1458,  1177,  1458,  1209,  1458,  1241,
-    1458,  1458,  -269,  -269,   220,  -269,    -2,  -269,  -269,   737,
-    1458,  -269,     3,  1458,  1458,     3,   220,   220,   220,   220,
-     168,    50,   571,   145,   220,   571,  -269,  -269,   171,    98,
-      98,  1458,  1458,  1458,  1458,     3,  -269,  -269,  -269,   169,
-     220,  1458,    30,   -14,  -269,   175,  -269,  -269,    98,  -269,
-    1458,  -269,  -269,  -269,   174,  -269,  -269,   174,  -269,   978,
-    -269,   571,   571,  -269,  -269,   571,   571,   174,   174,  -269,
-     978,   737,  -269,   147,   155,   488,   571,   180,   182,  -269,
-     184,   165,  -269,  -269,  -269,  -269,  -269,   190,  -269,  -269,
-    -269,  -269,  -269,   737,  -269,   654,  -269,   654,  -269,  -269,
-     571,  -269,  -269
+     320,   -65,  -271,  -271,   218,  -271,  -271,   218,   218,   910,
+       8,  1456,  -271,  -271,  -271,    51,    35,   809,  -271,    76,
+     218,    96,    75,    86,    89,    97,   218,   875,   118,   218,
+     218,   218,   218,   218,   218,   120,    60,   218,   218,   218,
+     218,     3,  -271,    13,  -271,  -271,  -271,    61,    70,   976,
+     218,  1425,  -271,  -271,  -271,  -271,  -271,  -271,  -271,    65,
+     218,  -271,  1425,  1425,  1425,   218,  1425,    62,   218,   218,
+     218,   218,  -271,  -271,    66,   218,  -271,   218,  -271,   122,
+    -271,  1425,    27,  -271,  -271,   944,   142,  -271,   -32,   218,
+     -26,   131,  -271,  -271,  1270,  -271,    27,  -271,  -271,    82,
+     -10,  1015,  1047,  1079,  1111,  1301,  -271,   158,   -10,   -10,
+    1363,    52,  -271,   403,   976,   218,   976,   135,  1394,  1425,
+     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
+     218,   218,   218,   218,   218,   218,   944,  1363,     5,   218,
+      62,    19,    62,    62,   160,  1425,  1425,   218,  -271,  -271,
+     162,   218,   218,  -271,   218,   218,   712,   218,   218,  -271,
+    -271,   218,  -271,   163,   218,   218,   218,   218,   218,   218,
+     218,   218,   218,   218,  -271,    47,  -271,  -271,  -271,    98,
+    1425,    99,  1332,   -65,   218,  -271,    20,    20,    20,   -10,
+     -10,   -10,  1425,    20,    20,   133,   172,   172,   -10,   -10,
+    1425,  1425,  -271,  1425,  -271,  -271,  1425,   166,  -271,  1425,
+    1425,  1425,  1425,   218,   218,  1425,  1425,   166,  1425,  -271,
+    1425,  1143,  1425,  1175,  1425,  1207,  1425,  1239,  1425,  1425,
+    -271,  -271,   218,  -271,    -2,  -271,  -271,   735,  1425,  -271,
+       4,  1425,  1425,     4,   218,   218,   218,   218,   166,    48,
+     569,   144,   218,   569,  -271,  -271,   170,   100,   100,  1425,
+    1425,  1425,  1425,     4,  -271,  -271,  -271,   167,   218,  1425,
+     -14,   -13,  -271,   177,  -271,  -271,   100,  -271,  1425,  -271,
+    -271,  -271,   164,  -271,  -271,   164,  -271,   976,  -271,   569,
+     569,  -271,  -271,   569,   569,   164,   164,  -271,   976,   735,
+    -271,   150,   156,   486,   569,   178,   179,  -271,   181,   165,
+    -271,  -271,  -271,  -271,  -271,   183,  -271,  -271,  -271,  -271,
+    -271,   735,  -271,   652,  -271,   652,  -271,  -271,   569,  -271,
+    -271
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -269,  -269,    11,   109,     6,  -228,     0,  -269,  -269,  -269,
-     -50,  -199,   -73,  -113,  -269,  -269,  -269,  -268,  -107,     2,
-    -219,  -269,     1,     7,  -269,  -269,  -269,   198,    -3,  -269,
-    -269,  -269,  -269,  -269,  -269,  -269,  -197,  -193,  -269,   -23
+    -271,  -271,    11,   107,     6,  -236,     0,  -271,  -271,  -271,
+     -60,  -270,   -83,  -112,  -271,  -271,  -271,  -222,  -106,     2,
+    -217,  -271,     1,     7,  -271,  -271,  -271,   194,    -3,  -271,
+    -271,  -271,  -271,  -271,  -271,  -271,  -195,  -178,  -271,   -23
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -882,328 +882,320 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -64
 static const yytype_int16 yytable[] =
 {
-      45,   180,   155,   182,   112,    62,    43,    52,    63,    64,
-      66,   256,    58,   -10,   158,   285,   300,   111,    81,   255,
-      57,    85,   245,    72,    97,   253,    68,    94,    81,   300,
-     100,   101,   102,   103,   104,   105,   286,   156,   108,   109,
-     110,    66,   139,   209,   254,   141,   142,   143,   144,   159,
-     118,   119,   113,   265,   219,   282,    73,   291,   292,    84,
-     204,   137,   295,    91,   296,   140,   138,   277,   232,    66,
-      66,    66,    66,   312,   305,   306,   146,   239,   147,   149,
-     283,    86,    87,   123,   124,   293,   125,   126,   302,   127,
-     157,    57,    57,   163,    77,   328,    79,    92,   258,   302,
-      93,   -10,   130,   131,   132,   133,   134,    98,   330,    88,
-      89,   135,   136,    45,   106,   118,   181,   183,    90,    43,
-      52,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   206,   233,
-     266,   205,   107,   140,   234,   140,   178,   140,   114,   208,
-     115,    69,   140,   211,   212,   145,   213,   214,   148,   217,
-     218,   154,   160,   220,   176,   284,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   304,   164,   184,   301,
-     207,   210,   221,   236,   235,   237,   240,   311,   126,   241,
-     127,   270,   274,   275,   279,   238,   290,   313,   123,   124,
-     315,   125,   126,   285,   127,   318,   323,   319,   325,   320,
-     321,   251,   135,   136,   327,   326,   243,   244,   131,   132,
-     133,   134,   179,   287,   309,    96,   135,   136,     0,     0,
-       0,     2,     3,     4,     5,    66,     6,     0,     0,     0,
-       0,    59,    12,     0,    13,     0,     0,   261,   262,   263,
-     264,     0,     0,   259,   269,   271,   260,   272,   273,     0,
-       0,     0,    60,     0,    22,     0,     0,     0,     0,     0,
-       0,   280,     0,   281,     0,     0,   278,     0,     0,     0,
-       0,     0,   294,     0,     0,    29,     0,     0,     0,   303,
-     118,     0,    30,    31,    32,    33,    34,   307,   308,   310,
-       0,   118,     0,    37,    38,     0,     0,     0,   317,    39,
-       0,     0,     0,    40,   322,     0,   324,     0,     0,     0,
-       0,     0,    -6,     1,     0,   329,     0,   329,     0,     0,
-       0,   331,   332,     2,     3,     4,     5,     0,     6,     7,
-       8,     9,    10,    11,    12,     0,    13,     0,    14,     0,
-       0,     0,    15,     0,    16,    17,    18,   123,   124,    19,
-     125,   126,     0,   127,    20,    21,    22,     0,     0,    23,
-       0,     0,     0,    24,    25,    26,    27,     0,    28,   133,
-     134,     0,     0,     0,     0,   135,   136,    29,     0,     0,
+      45,   254,   179,   112,   181,    62,    43,    52,    63,    64,
+      66,   280,    58,   -10,   154,   300,   283,   111,    81,   253,
+     157,    85,   243,    57,    97,   251,   300,    94,    81,    68,
+     100,   101,   102,   103,   104,   105,   281,   284,   108,   109,
+     110,    66,   138,   207,   252,   140,   141,   142,   143,   155,
+     118,   119,   113,   263,   217,   158,    73,   289,   290,   126,
+     298,   136,   293,   310,   294,    77,   137,    79,   230,    66,
+      66,    66,    66,   298,   303,   304,   145,   237,   146,   148,
+     275,   134,   135,   123,   124,   326,   125,    88,    89,   126,
+     156,    57,    57,   162,    72,   202,    90,    84,   291,   256,
+     139,   -10,   129,   130,   131,   132,   133,    91,   328,   204,
+      92,   134,   135,    45,   139,   118,   180,   182,    93,    43,
+      52,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,   231,   264,    98,
+     203,   106,   232,   139,    86,    87,   177,   139,   206,   107,
+     114,   115,   209,   210,    69,   211,   212,   139,   215,   216,
+     147,   144,   218,   153,   282,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   302,   159,   163,   299,   175,
+     183,   205,   234,   208,   219,   238,   309,   239,   233,   235,
+     268,   272,   277,   283,   236,   273,   123,   124,   288,   125,
+     311,   313,   126,   316,   317,   321,   318,   323,   324,   249,
+     319,   285,   307,   325,   241,   242,   130,   131,   132,   133,
+     178,    96,     0,     0,   134,   135,     0,     0,     0,     2,
+       3,     4,     5,    66,     6,   123,   124,     0,   125,    59,
+      12,   126,    13,     0,     0,   259,   260,   261,   262,     0,
+       0,   257,   267,   269,   258,   270,   271,   132,   133,     0,
+      60,     0,    22,   134,   135,     0,     0,     0,     0,   278,
+       0,   279,     0,     0,   276,     0,     0,     0,     0,     0,
+     292,     0,     0,    29,     0,     0,     0,   301,   118,     0,
+      30,    31,    32,    33,    34,   305,   306,   308,     0,   118,
+       0,    37,    38,     0,     0,     0,   315,    39,     0,     0,
+       0,    40,   320,     0,   322,     0,     0,     0,     0,     0,
+      -6,     1,     0,   327,     0,   327,     0,     0,     0,   329,
+     330,     2,     3,     4,     5,     0,     6,     7,     8,     9,
+      10,    11,    12,     0,    13,     0,    14,     0,     0,     0,
+      15,     0,    16,    17,    18,     0,     0,    19,     0,     0,
+       0,     0,    20,    21,    22,     0,     0,    23,     0,     0,
+       0,    24,    25,    26,    27,     0,    28,     0,     0,     0,
+       0,     0,     0,     0,     0,    29,     0,     0,     0,     0,
+       0,     0,    30,    31,    32,    33,    34,     0,     0,    35,
+      36,     0,     0,    37,    38,     0,     0,     0,    -6,    39,
+       0,     0,     0,    40,     2,     3,     4,     5,     0,     6,
+       7,     8,     9,    10,    11,    12,     0,    13,     0,    14,
+       0,     0,     0,    15,     0,    16,    17,    18,     0,     0,
+      19,     0,     0,     0,     0,    20,    21,    22,     0,     0,
+      23,     0,     0,     0,    24,    25,    26,    27,     0,    28,
+       0,     0,     0,     0,     0,     0,     0,     0,    29,     0,
+       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
+       0,     0,    35,    36,     0,     0,    37,    38,     0,     0,
+       0,     0,    39,     0,     0,     0,    40,     2,     3,     4,
+       5,     0,     6,     7,     8,     9,    10,    59,    12,     0,
+      13,   314,    14,     0,     0,     0,    15,     0,    16,    17,
+      18,     0,     0,     0,     0,     0,     0,     0,    20,    21,
+      22,     0,     0,    23,     0,     0,     0,     0,     0,    26,
+      27,     0,    28,     0,     0,     0,     0,     0,     0,     0,
+       0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
+      32,    33,    34,     0,     0,     0,    36,     0,     0,    37,
+      38,     0,     0,     0,    57,    39,     0,     0,     0,    40,
+       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
+      59,    12,     0,    13,     0,    14,     0,     0,     0,    15,
+       0,    16,    17,    18,     0,     0,     0,     0,     0,     0,
+       0,    20,    21,    22,     0,     0,    23,     0,     0,     0,
+       0,     0,    26,    27,     0,    28,     0,     0,     0,     0,
+       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
+       0,    30,    31,    32,    33,    34,     0,     0,     0,    36,
+       0,     0,    37,    38,     0,     0,     0,    57,    39,     0,
+       0,     0,    40,     2,     3,     4,     5,     0,     6,     7,
+       8,     9,    10,    59,    12,     0,    13,     0,    14,     0,
+       0,     0,    15,     0,    16,    17,    18,     0,     0,     0,
+       0,     0,     0,     0,    20,    21,    22,     0,     0,    23,
+       0,     0,     0,     0,     0,    26,    27,     0,    28,     0,
+       0,     0,     0,     0,     0,     0,     0,    29,     0,     0,
        0,     0,     0,     0,    30,    31,    32,    33,    34,     0,
-       0,    35,    36,     0,     0,    37,    38,     0,     0,     0,
-      -6,    39,     0,     0,     0,    40,     2,     3,     4,     5,
-       0,     6,     7,     8,     9,    10,    11,    12,     0,    13,
-       0,    14,     0,     0,     0,    15,     0,    16,    17,    18,
-       0,     0,    19,     0,     0,     0,     0,    20,    21,    22,
-       0,     0,    23,     0,     0,     0,    24,    25,    26,    27,
-       0,    28,     0,     0,     0,     0,     0,     0,     0,     0,
-      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,     0,     0,    35,    36,     0,     0,    37,    38,
-       0,     0,     0,     0,    39,     0,     0,     0,    40,     2,
-       3,     4,     5,     0,     6,     7,     8,     9,    10,    59,
-      12,     0,    13,   316,    14,     0,     0,     0,    15,     0,
-      16,    17,    18,     0,     0,     0,     0,     0,     0,     0,
-      20,    21,    22,     0,     0,    23,     0,     0,     0,     0,
-       0,    26,    27,     0,    28,     0,     0,     0,     0,     0,
-       0,     0,     0,    29,     0,     0,     0,     0,     0,     0,
-      30,    31,    32,    33,    34,     0,     0,     0,    36,     0,
-       0,    37,    38,     0,     0,     0,    57,    39,     0,     0,
-       0,    40,     2,     3,     4,     5,     0,     6,     7,     8,
-       9,    10,    59,    12,     0,    13,     0,    14,     0,     0,
-       0,    15,     0,    16,    17,    18,     0,     0,     0,     0,
-       0,     0,     0,    20,    21,    22,     0,     0,    23,     0,
-       0,     0,     0,     0,    26,    27,     0,    28,     0,     0,
-       0,     0,     0,     0,     0,     0,    29,     0,     0,     0,
-       0,     0,     0,    30,    31,    32,    33,    34,     0,     0,
-       0,    36,     0,     0,    37,    38,     0,     0,     0,    57,
-      39,     0,     0,     0,    40,     2,     3,     4,     5,     0,
-       6,     7,     8,     9,    10,    59,    12,     0,    13,     0,
-      14,     0,     0,     0,    15,     0,    16,    17,    18,     0,
-       0,     0,     0,     0,     0,     0,    20,    21,    22,     0,
-       0,    23,     0,     0,     0,     0,     0,    26,    27,     0,
-      28,     0,     0,     0,     0,     0,     0,     0,     0,    29,
-       0,     0,     0,     0,     0,     0,    30,    31,    32,    33,
-      34,     0,     0,     0,    36,     0,     0,    37,    38,     0,
-       0,     0,     0,    39,     0,     0,     0,    40,     2,     3,
-       4,     5,     0,     6,     7,     8,     9,    10,    59,    12,
-       0,    13,     0,    14,     0,     0,     0,    15,     0,    16,
-      17,     0,     0,     0,     0,     0,     0,     0,     0,    20,
-       0,    22,     0,     0,     0,     0,     0,     0,     0,     0,
-      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
-       0,     0,    29,     0,     0,     0,     0,     0,     0,    30,
-      31,    32,    33,    34,     0,     0,     0,    36,     0,     0,
-      37,    38,     2,     3,     4,     5,    39,     6,     0,     0,
-      40,     0,    59,    12,     0,    13,     0,     0,     0,     0,
-       0,     0,    75,     0,     0,     0,     0,    76,     0,    77,
-      78,    79,    80,    60,     0,    22,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    29,     0,     0,     0,
-       0,     0,     0,    30,    31,    32,    33,    34,     2,     3,
-       4,     5,     0,     6,    37,    38,     0,     0,    59,    12,
-      39,    13,     0,     0,    40,     0,     0,     0,    75,     0,
-       0,     0,     0,     0,     0,    77,     0,    79,     0,    60,
-       0,    22,     0,     2,     3,     4,     5,     0,     6,     0,
-       0,     0,    95,    59,    12,     0,    13,     0,     0,     0,
-       0,     0,    29,     0,     0,     0,     0,     0,     0,    30,
-      31,    32,    33,    34,    60,     0,    22,     0,     0,     0,
-      37,    38,     0,     0,     0,     0,    39,     0,     0,     0,
-      40,     0,     0,     0,     0,     0,     0,    29,     0,     0,
-       0,   151,     0,     0,    30,    31,    32,    33,    34,     2,
-       3,     4,     5,     0,     6,    37,    38,     0,     0,    59,
-      12,    65,    13,   120,   121,    40,     0,     0,   122,   123,
-     124,     0,   125,   152,   153,   127,   128,   129,     0,     0,
-      60,     0,    22,     0,     0,     0,     0,     0,   130,   131,
-     132,   133,   134,     0,     0,     0,     0,   135,   136,     0,
-       0,     0,     0,    29,     0,     0,     0,     0,     0,     0,
-      30,    31,    32,    33,    34,     0,     0,   165,     0,     0,
-       0,    37,    38,   166,     0,     0,     0,   116,     0,     0,
-       0,    40,     0,     0,   120,   121,     0,     0,     0,   122,
-     123,   124,     0,   125,   126,     0,   127,   128,   129,   167,
-       0,     0,     0,     0,     0,   168,     0,     0,     0,   130,
-     131,   132,   133,   134,     0,     0,   120,   121,   135,   136,
-       0,   122,   123,   124,     0,   125,   126,     0,   127,   128,
-     129,   169,     0,     0,     0,     0,     0,   170,     0,     0,
-       0,   130,   131,   132,   133,   134,     0,     0,   120,   121,
-     135,   136,     0,   122,   123,   124,     0,   125,   126,     0,
-     127,   128,   129,   171,     0,     0,     0,     0,     0,   172,
-       0,     0,     0,   130,   131,   132,   133,   134,     0,     0,
-     120,   121,   135,   136,     0,   122,   123,   124,     0,   125,
-     126,     0,   127,   128,   129,   246,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   130,   131,   132,   133,   134,
-       0,     0,   120,   121,   135,   136,     0,   122,   123,   124,
-       0,   125,   126,     0,   127,   128,   129,   247,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   130,   131,   132,
-     133,   134,     0,     0,   120,   121,   135,   136,     0,   122,
-     123,   124,     0,   125,   126,     0,   127,   128,   129,   248,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   130,
-     131,   132,   133,   134,     0,     0,   120,   121,   135,   136,
-       0,   122,   123,   124,     0,   125,   126,     0,   127,   128,
-     129,   249,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   130,   131,   132,   133,   134,     0,     0,   120,   121,
-     135,   136,     0,   122,   123,   124,     0,   125,   126,     0,
-     127,   128,   129,     0,     0,     0,     0,     0,   215,     0,
-       0,     0,     0,   130,   131,   132,   133,   134,     0,   120,
-     121,     0,   135,   136,   122,   123,   124,     0,   125,   126,
-       0,   127,   128,   129,     0,     0,     0,     0,     0,     0,
-       0,   162,     0,   216,   130,   131,   132,   133,   134,     0,
-     120,   121,     0,   135,   136,   122,   123,   124,     0,   125,
-     126,     0,   127,   128,   129,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   130,   131,   132,   133,   134,
-       0,   120,   121,     0,   135,   136,   122,   123,   124,     0,
-     125,   126,     0,   127,   128,   129,     0,     0,     0,     0,
-       0,   173,   174,     0,     0,     0,   130,   131,   132,   133,
-     134,     0,   120,   121,     0,   135,   136,   122,   123,   124,
-       0,   125,   126,     0,   127,   128,   129,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   185,   130,   131,   132,
-     133,   134,     0,   120,   121,   177,   135,   136,   122,   123,
-     124,     0,   125,   126,     0,   127,   128,   129,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   130,   131,
-     132,   133,   134,     0,   120,   121,   177,   135,   136,   122,
-     123,   124,     0,   125,   126,     0,   127,   128,   129,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   185,   130,
-     131,   132,   133,   134,     0,   120,   121,     0,   135,   136,
-     122,   123,   124,     0,   125,   126,     0,   127,   128,   129,
+       0,     0,    36,     0,     0,    37,    38,     0,     0,     0,
+       0,    39,     0,     0,     0,    40,     2,     3,     4,     5,
+       0,     6,     7,     8,     9,    10,    59,    12,   213,    13,
+       0,    14,     0,     0,     0,    15,     0,    16,    17,   120,
+     121,     0,     0,     0,   122,   123,   124,    20,   125,    22,
+       0,   126,   127,   128,     0,     0,     0,     0,    26,    27,
+       0,    28,     0,   214,   129,   130,   131,   132,   133,     0,
+      29,     0,     0,   134,   135,     0,     0,    30,    31,    32,
+      33,    34,     0,     0,     0,    36,     0,     0,    37,    38,
+       2,     3,     4,     5,    39,     6,     0,     0,    40,     0,
+      59,    12,     0,    13,     0,     0,     0,     0,     0,     0,
+      75,     0,     0,     0,     0,    76,     0,    77,    78,    79,
+      80,    60,     0,    22,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     130,   131,   132,   133,   134,     0,   -63,   -63,     0,   135,
-     136,   -63,   -63,   -63,     0,   -63,   -63,     0,   -63,   -63,
-     -63,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   -63,     0,     0,   -63,   -63,     0,     0,    69,     0,
-     -63,   -63
+       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
+       0,    30,    31,    32,    33,    34,     2,     3,     4,     5,
+       0,     6,    37,    38,     0,     0,    59,    12,    39,    13,
+       0,     0,    40,     0,     0,     0,    75,     0,     0,     0,
+       0,     0,     0,    77,     0,    79,     0,    60,     0,    22,
+       0,     2,     3,     4,     5,     0,     6,     0,     0,     0,
+      95,    59,    12,     0,    13,     0,     0,     0,     0,     0,
+      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
+      33,    34,    60,     0,    22,     0,     0,     0,    37,    38,
+       0,     0,     0,     0,    39,     0,     0,     0,    40,     0,
+       0,     0,     0,     0,     0,    29,     0,     0,     0,   150,
+       0,     0,    30,    31,    32,    33,    34,     2,     3,     4,
+       5,     0,     6,    37,    38,     0,     0,    59,    12,    65,
+      13,   120,   121,    40,     0,     0,   122,   123,   124,     0,
+     125,   151,   152,   126,   127,   128,     0,     0,    60,     0,
+      22,     0,     0,     0,     0,     0,   129,   130,   131,   132,
+     133,     0,     0,     0,     0,   134,   135,     0,     0,     0,
+       0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
+      32,    33,    34,     0,     0,   164,     0,     0,     0,    37,
+      38,   165,     0,     0,     0,   116,     0,     0,     0,    40,
+       0,     0,   120,   121,     0,     0,     0,   122,   123,   124,
+       0,   125,     0,     0,   126,   127,   128,   166,     0,     0,
+       0,     0,     0,   167,     0,     0,     0,   129,   130,   131,
+     132,   133,     0,     0,   120,   121,   134,   135,     0,   122,
+     123,   124,     0,   125,     0,     0,   126,   127,   128,   168,
+       0,     0,     0,     0,     0,   169,     0,     0,     0,   129,
+     130,   131,   132,   133,     0,     0,   120,   121,   134,   135,
+       0,   122,   123,   124,     0,   125,     0,     0,   126,   127,
+     128,   170,     0,     0,     0,     0,     0,   171,     0,     0,
+       0,   129,   130,   131,   132,   133,     0,     0,   120,   121,
+     134,   135,     0,   122,   123,   124,     0,   125,     0,     0,
+     126,   127,   128,   244,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   129,   130,   131,   132,   133,     0,     0,
+     120,   121,   134,   135,     0,   122,   123,   124,     0,   125,
+       0,     0,   126,   127,   128,   245,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   129,   130,   131,   132,   133,
+       0,     0,   120,   121,   134,   135,     0,   122,   123,   124,
+       0,   125,     0,     0,   126,   127,   128,   246,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   129,   130,   131,
+     132,   133,     0,     0,   120,   121,   134,   135,     0,   122,
+     123,   124,     0,   125,     0,     0,   126,   127,   128,   247,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   129,
+     130,   131,   132,   133,     0,     0,   120,   121,   134,   135,
+       0,   122,   123,   124,     0,   125,     0,     0,   126,   127,
+     128,     0,     0,     0,     0,     0,     0,     0,   161,     0,
+       0,   129,   130,   131,   132,   133,     0,   120,   121,     0,
+     134,   135,   122,   123,   124,     0,   125,     0,     0,   126,
+     127,   128,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   129,   130,   131,   132,   133,     0,   120,   121,
+       0,   134,   135,   122,   123,   124,     0,   125,     0,     0,
+     126,   127,   128,     0,     0,     0,     0,     0,   172,   173,
+       0,     0,     0,   129,   130,   131,   132,   133,     0,   120,
+     121,     0,   134,   135,   122,   123,   124,     0,   125,     0,
+       0,   126,   127,   128,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   184,   129,   130,   131,   132,   133,     0,
+     120,   121,   176,   134,   135,   122,   123,   124,     0,   125,
+       0,     0,   126,   127,   128,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   129,   130,   131,   132,   133,
+       0,   120,   121,   176,   134,   135,   122,   123,   124,     0,
+     125,     0,     0,   126,   127,   128,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   184,   129,   130,   131,   132,
+     133,     0,   120,   121,     0,   134,   135,   122,   123,   124,
+       0,   125,     0,     0,   126,   127,   128,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   129,   130,   131,
+     132,   133,     0,   -63,   -63,     0,   134,   135,   -63,   -63,
+     -63,     0,   -63,     0,     0,   -63,   -63,   -63,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   -63,     0,
+       0,   -63,   -63,     0,     0,    69,     0,   -63,   -63
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,   114,    46,   116,     0,     4,     0,     0,     7,     8,
-       9,   239,     1,     0,    46,    29,   284,    40,    17,   238,
-      88,    20,   219,    43,    27,    27,    21,    26,    27,   297,
-      29,    30,    31,    32,    33,    34,    50,    81,    37,    38,
-      39,    40,    65,   150,    46,    68,    69,    70,    71,    81,
-      49,    50,    41,   250,   161,    25,    21,   276,   277,    21,
-      90,    60,   281,    21,   283,    95,    65,   260,   175,    68,
-      69,    70,    71,   301,   293,   294,    75,   184,    77,    82,
-      50,    48,    49,    63,    64,   278,    66,    67,   287,    69,
-      89,    88,    88,    96,    38,   323,    40,    21,    95,   298,
-      21,    88,    82,    83,    84,    85,    86,    21,   327,    12,
-      13,    91,    92,   113,    21,   114,   115,   116,    21,   113,
+       0,   237,   114,     0,   116,     4,     0,     0,     7,     8,
+       9,    25,     1,     0,    46,   285,    29,    40,    17,   236,
+      46,    20,   217,    88,    27,    27,   296,    26,    27,    21,
+      29,    30,    31,    32,    33,    34,    50,    50,    37,    38,
+      39,    40,    65,   149,    46,    68,    69,    70,    71,    81,
+      49,    50,    41,   248,   160,    81,    21,   274,   275,    69,
+     282,    60,   279,   299,   281,    38,    65,    40,   174,    68,
+      69,    70,    71,   295,   291,   292,    75,   183,    77,    82,
+     258,    91,    92,    63,    64,   321,    66,    12,    13,    69,
+      89,    88,    88,    96,    43,    90,    21,    21,   276,    95,
+      95,    88,    82,    83,    84,    85,    86,    21,   325,    90,
+      21,    91,    92,   113,    95,   114,   115,   116,    21,   113,
      113,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,    90,    90,
-      90,   140,    89,    95,    95,    95,    94,    95,    89,   148,
-      81,    89,    95,   152,   153,    95,   155,   156,    38,   158,
-     159,    21,    45,   162,    21,   272,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   289,    95,    45,   286,
-      21,    21,    21,   181,    90,    90,   185,   300,    67,    21,
-      69,    46,    21,    95,    25,   184,    21,    50,    63,    64,
-      45,    66,    67,    29,    69,    25,   313,    25,   315,    25,
-      45,   234,    91,    92,   321,    25,   215,   216,    83,    84,
-      85,    86,   113,   273,   297,    27,    91,    92,    -1,    -1,
-      -1,    11,    12,    13,    14,   234,    16,    -1,    -1,    -1,
-      -1,    21,    22,    -1,    24,    -1,    -1,   246,   247,   248,
-     249,    -1,    -1,   242,   252,   254,   245,   255,   256,    -1,
-      -1,    -1,    42,    -1,    44,    -1,    -1,    -1,    -1,    -1,
-      -1,   270,    -1,   271,    -1,    -1,   265,    -1,    -1,    -1,
-      -1,    -1,   280,    -1,    -1,    65,    -1,    -1,    -1,   287,
-     289,    -1,    72,    73,    74,    75,    76,   295,   296,   297,
-      -1,   300,    -1,    83,    84,    -1,    -1,    -1,   306,    89,
-      -1,    -1,    -1,    93,   312,    -1,   314,    -1,    -1,    -1,
-      -1,    -1,     0,     1,    -1,   325,    -1,   327,    -1,    -1,
-      -1,   329,   330,    11,    12,    13,    14,    -1,    16,    17,
+     129,   130,   131,   132,   133,   134,   135,    90,    90,    21,
+     139,    21,    95,    95,    48,    49,    94,    95,   147,    89,
+      89,    81,   151,   152,    89,   154,   155,    95,   157,   158,
+      38,    95,   161,    21,   270,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   287,    45,    95,   284,    21,
+      45,    21,   180,    21,    21,   184,   298,    21,    90,    90,
+      46,    21,    25,    29,   183,    95,    63,    64,    21,    66,
+      50,    45,    69,    25,    25,   311,    25,   313,    25,   232,
+      45,   271,   295,   319,   213,   214,    83,    84,    85,    86,
+     113,    27,    -1,    -1,    91,    92,    -1,    -1,    -1,    11,
+      12,    13,    14,   232,    16,    63,    64,    -1,    66,    21,
+      22,    69,    24,    -1,    -1,   244,   245,   246,   247,    -1,
+      -1,   240,   250,   252,   243,   253,   254,    85,    86,    -1,
+      42,    -1,    44,    91,    92,    -1,    -1,    -1,    -1,   268,
+      -1,   269,    -1,    -1,   263,    -1,    -1,    -1,    -1,    -1,
+     278,    -1,    -1,    65,    -1,    -1,    -1,   285,   287,    -1,
+      72,    73,    74,    75,    76,   293,   294,   295,    -1,   298,
+      -1,    83,    84,    -1,    -1,    -1,   304,    89,    -1,    -1,
+      -1,    93,   310,    -1,   312,    -1,    -1,    -1,    -1,    -1,
+       0,     1,    -1,   323,    -1,   325,    -1,    -1,    -1,   327,
+     328,    11,    12,    13,    14,    -1,    16,    17,    18,    19,
+      20,    21,    22,    -1,    24,    -1,    26,    -1,    -1,    -1,
+      30,    -1,    32,    33,    34,    -1,    -1,    37,    -1,    -1,
+      -1,    -1,    42,    43,    44,    -1,    -1,    47,    -1,    -1,
+      -1,    51,    52,    53,    54,    -1,    56,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
+      -1,    -1,    72,    73,    74,    75,    76,    -1,    -1,    79,
+      80,    -1,    -1,    83,    84,    -1,    -1,    -1,    88,    89,
+      -1,    -1,    -1,    93,    11,    12,    13,    14,    -1,    16,
+      17,    18,    19,    20,    21,    22,    -1,    24,    -1,    26,
+      -1,    -1,    -1,    30,    -1,    32,    33,    34,    -1,    -1,
+      37,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,    -1,
+      47,    -1,    -1,    -1,    51,    52,    53,    54,    -1,    56,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
+      -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,
+      -1,    -1,    79,    80,    -1,    -1,    83,    84,    -1,    -1,
+      -1,    -1,    89,    -1,    -1,    -1,    93,    11,    12,    13,
+      14,    -1,    16,    17,    18,    19,    20,    21,    22,    -1,
+      24,    25,    26,    -1,    -1,    -1,    30,    -1,    32,    33,
+      34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,
+      44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    53,
+      54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
+      74,    75,    76,    -1,    -1,    -1,    80,    -1,    -1,    83,
+      84,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    93,
+      11,    12,    13,    14,    -1,    16,    17,    18,    19,    20,
+      21,    22,    -1,    24,    -1,    26,    -1,    -1,    -1,    30,
+      -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    42,    43,    44,    -1,    -1,    47,    -1,    -1,    -1,
+      -1,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+      -1,    72,    73,    74,    75,    76,    -1,    -1,    -1,    80,
+      -1,    -1,    83,    84,    -1,    -1,    -1,    88,    89,    -1,
+      -1,    -1,    93,    11,    12,    13,    14,    -1,    16,    17,
       18,    19,    20,    21,    22,    -1,    24,    -1,    26,    -1,
-      -1,    -1,    30,    -1,    32,    33,    34,    63,    64,    37,
-      66,    67,    -1,    69,    42,    43,    44,    -1,    -1,    47,
-      -1,    -1,    -1,    51,    52,    53,    54,    -1,    56,    85,
-      86,    -1,    -1,    -1,    -1,    91,    92,    65,    -1,    -1,
+      -1,    -1,    30,    -1,    32,    33,    34,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    42,    43,    44,    -1,    -1,    47,
+      -1,    -1,    -1,    -1,    -1,    53,    54,    -1,    56,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
       -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    -1,
-      -1,    79,    80,    -1,    -1,    83,    84,    -1,    -1,    -1,
-      88,    89,    -1,    -1,    -1,    93,    11,    12,    13,    14,
-      -1,    16,    17,    18,    19,    20,    21,    22,    -1,    24,
-      -1,    26,    -1,    -1,    -1,    30,    -1,    32,    33,    34,
-      -1,    -1,    37,    -1,    -1,    -1,    -1,    42,    43,    44,
-      -1,    -1,    47,    -1,    -1,    -1,    51,    52,    53,    54,
-      -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
-      75,    76,    -1,    -1,    79,    80,    -1,    -1,    83,    84,
-      -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    11,
-      12,    13,    14,    -1,    16,    17,    18,    19,    20,    21,
-      22,    -1,    24,    25,    26,    -1,    -1,    -1,    30,    -1,
-      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      42,    43,    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,
-      -1,    53,    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
-      72,    73,    74,    75,    76,    -1,    -1,    -1,    80,    -1,
-      -1,    83,    84,    -1,    -1,    -1,    88,    89,    -1,    -1,
-      -1,    93,    11,    12,    13,    14,    -1,    16,    17,    18,
-      19,    20,    21,    22,    -1,    24,    -1,    26,    -1,    -1,
-      -1,    30,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    42,    43,    44,    -1,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    53,    54,    -1,    56,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
-      -1,    -1,    -1,    72,    73,    74,    75,    76,    -1,    -1,
-      -1,    80,    -1,    -1,    83,    84,    -1,    -1,    -1,    88,
-      89,    -1,    -1,    -1,    93,    11,    12,    13,    14,    -1,
-      16,    17,    18,    19,    20,    21,    22,    -1,    24,    -1,
-      26,    -1,    -1,    -1,    30,    -1,    32,    33,    34,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,
-      -1,    47,    -1,    -1,    -1,    -1,    -1,    53,    54,    -1,
-      56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
-      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,
-      76,    -1,    -1,    -1,    80,    -1,    -1,    83,    84,    -1,
-      -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    11,    12,
-      13,    14,    -1,    16,    17,    18,    19,    20,    21,    22,
-      -1,    24,    -1,    26,    -1,    -1,    -1,    30,    -1,    32,
-      33,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
-      -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      53,    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-      73,    74,    75,    76,    -1,    -1,    -1,    80,    -1,    -1,
-      83,    84,    11,    12,    13,    14,    89,    16,    -1,    -1,
-      93,    -1,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,
-      -1,    -1,    31,    -1,    -1,    -1,    -1,    36,    -1,    38,
-      39,    40,    41,    42,    -1,    44,    -1,    -1,    -1,    -1,
+      -1,    -1,    80,    -1,    -1,    83,    84,    -1,    -1,    -1,
+      -1,    89,    -1,    -1,    -1,    93,    11,    12,    13,    14,
+      -1,    16,    17,    18,    19,    20,    21,    22,    46,    24,
+      -1,    26,    -1,    -1,    -1,    30,    -1,    32,    33,    57,
+      58,    -1,    -1,    -1,    62,    63,    64,    42,    66,    44,
+      -1,    69,    70,    71,    -1,    -1,    -1,    -1,    53,    54,
+      -1,    56,    -1,    81,    82,    83,    84,    85,    86,    -1,
+      65,    -1,    -1,    91,    92,    -1,    -1,    72,    73,    74,
+      75,    76,    -1,    -1,    -1,    80,    -1,    -1,    83,    84,
+      11,    12,    13,    14,    89,    16,    -1,    -1,    93,    -1,
+      21,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,
+      31,    -1,    -1,    -1,    -1,    36,    -1,    38,    39,    40,
+      41,    42,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
-      -1,    -1,    -1,    72,    73,    74,    75,    76,    11,    12,
-      13,    14,    -1,    16,    83,    84,    -1,    -1,    21,    22,
-      89,    24,    -1,    -1,    93,    -1,    -1,    -1,    31,    -1,
-      -1,    -1,    -1,    -1,    -1,    38,    -1,    40,    -1,    42,
-      -1,    44,    -1,    11,    12,    13,    14,    -1,    16,    -1,
-      -1,    -1,    55,    21,    22,    -1,    24,    -1,    -1,    -1,
-      -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-      73,    74,    75,    76,    42,    -1,    44,    -1,    -1,    -1,
-      83,    84,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,
-      93,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
-      -1,    35,    -1,    -1,    72,    73,    74,    75,    76,    11,
-      12,    13,    14,    -1,    16,    83,    84,    -1,    -1,    21,
-      22,    89,    24,    57,    58,    93,    -1,    -1,    62,    63,
-      64,    -1,    66,    67,    68,    69,    70,    71,    -1,    -1,
-      42,    -1,    44,    -1,    -1,    -1,    -1,    -1,    82,    83,
-      84,    85,    86,    -1,    -1,    -1,    -1,    91,    92,    -1,
-      -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
-      72,    73,    74,    75,    76,    -1,    -1,    40,    -1,    -1,
-      -1,    83,    84,    46,    -1,    -1,    -1,    89,    -1,    -1,
-      -1,    93,    -1,    -1,    57,    58,    -1,    -1,    -1,    62,
-      63,    64,    -1,    66,    67,    -1,    69,    70,    71,    40,
+      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+      -1,    72,    73,    74,    75,    76,    11,    12,    13,    14,
+      -1,    16,    83,    84,    -1,    -1,    21,    22,    89,    24,
+      -1,    -1,    93,    -1,    -1,    -1,    31,    -1,    -1,    -1,
+      -1,    -1,    -1,    38,    -1,    40,    -1,    42,    -1,    44,
+      -1,    11,    12,    13,    14,    -1,    16,    -1,    -1,    -1,
+      55,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,
+      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
+      75,    76,    42,    -1,    44,    -1,    -1,    -1,    83,    84,
+      -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    -1,
+      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    35,
+      -1,    -1,    72,    73,    74,    75,    76,    11,    12,    13,
+      14,    -1,    16,    83,    84,    -1,    -1,    21,    22,    89,
+      24,    57,    58,    93,    -1,    -1,    62,    63,    64,    -1,
+      66,    67,    68,    69,    70,    71,    -1,    -1,    42,    -1,
+      44,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,
+      86,    -1,    -1,    -1,    -1,    91,    92,    -1,    -1,    -1,
+      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
+      74,    75,    76,    -1,    -1,    40,    -1,    -1,    -1,    83,
+      84,    46,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,
+      -1,    -1,    57,    58,    -1,    -1,    -1,    62,    63,    64,
+      -1,    66,    -1,    -1,    69,    70,    71,    40,    -1,    -1,
+      -1,    -1,    -1,    46,    -1,    -1,    -1,    82,    83,    84,
+      85,    86,    -1,    -1,    57,    58,    91,    92,    -1,    62,
+      63,    64,    -1,    66,    -1,    -1,    69,    70,    71,    40,
       -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    -1,    82,
       83,    84,    85,    86,    -1,    -1,    57,    58,    91,    92,
-      -1,    62,    63,    64,    -1,    66,    67,    -1,    69,    70,
+      -1,    62,    63,    64,    -1,    66,    -1,    -1,    69,    70,
       71,    40,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,
       -1,    82,    83,    84,    85,    86,    -1,    -1,    57,    58,
-      91,    92,    -1,    62,    63,    64,    -1,    66,    67,    -1,
-      69,    70,    71,    40,    -1,    -1,    -1,    -1,    -1,    46,
+      91,    92,    -1,    62,    63,    64,    -1,    66,    -1,    -1,
+      69,    70,    71,    40,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
       57,    58,    91,    92,    -1,    62,    63,    64,    -1,    66,
-      67,    -1,    69,    70,    71,    40,    -1,    -1,    -1,    -1,
+      -1,    -1,    69,    70,    71,    40,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,
       -1,    -1,    57,    58,    91,    92,    -1,    62,    63,    64,
-      -1,    66,    67,    -1,    69,    70,    71,    40,    -1,    -1,
+      -1,    66,    -1,    -1,    69,    70,    71,    40,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,
       85,    86,    -1,    -1,    57,    58,    91,    92,    -1,    62,
-      63,    64,    -1,    66,    67,    -1,    69,    70,    71,    40,
+      63,    64,    -1,    66,    -1,    -1,    69,    70,    71,    40,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
       83,    84,    85,    86,    -1,    -1,    57,    58,    91,    92,
-      -1,    62,    63,    64,    -1,    66,    67,    -1,    69,    70,
-      71,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    82,    83,    84,    85,    86,    -1,    -1,    57,    58,
-      91,    92,    -1,    62,    63,    64,    -1,    66,    67,    -1,
-      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    46,    -1,
+      -1,    62,    63,    64,    -1,    66,    -1,    -1,    69,    70,
+      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,
+      -1,    82,    83,    84,    85,    86,    -1,    57,    58,    -1,
+      91,    92,    62,    63,    64,    -1,    66,    -1,    -1,    69,
+      70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    82,    83,    84,    85,    86,    -1,    57,    58,
+      -1,    91,    92,    62,    63,    64,    -1,    66,    -1,    -1,
+      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    77,    78,
       -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    57,
-      58,    -1,    91,    92,    62,    63,    64,    -1,    66,    67,
+      58,    -1,    91,    92,    62,    63,    64,    -1,    66,    -1,
       -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    48,    -1,    81,    82,    83,    84,    85,    86,    -1,
-      57,    58,    -1,    91,    92,    62,    63,    64,    -1,    66,
-      67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    81,    82,    83,    84,    85,    86,    -1,
+      57,    58,    90,    91,    92,    62,    63,    64,    -1,    66,
+      -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,
-      -1,    57,    58,    -1,    91,    92,    62,    63,    64,    -1,
-      66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,
-      -1,    77,    78,    -1,    -1,    -1,    82,    83,    84,    85,
+      -1,    57,    58,    90,    91,    92,    62,    63,    64,    -1,
+      66,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    81,    82,    83,    84,    85,
       86,    -1,    57,    58,    -1,    91,    92,    62,    63,    64,
-      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    84,
-      85,    86,    -1,    57,    58,    90,    91,    92,    62,    63,
-      64,    -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,
-      84,    85,    86,    -1,    57,    58,    90,    91,    92,    62,
-      63,    64,    -1,    66,    67,    -1,    69,    70,    71,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,
-      83,    84,    85,    86,    -1,    57,    58,    -1,    91,    92,
-      62,    63,    64,    -1,    66,    67,    -1,    69,    70,    71,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      82,    83,    84,    85,    86,    -1,    57,    58,    -1,    91,
-      92,    62,    63,    64,    -1,    66,    67,    -1,    69,    70,
-      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    -1,
-      91,    92
+      -1,    66,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,
+      85,    86,    -1,    57,    58,    -1,    91,    92,    62,    63,
+      64,    -1,    66,    -1,    -1,    69,    70,    71,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
+      -1,    85,    86,    -1,    -1,    89,    -1,    91,    92
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1222,28 +1214,28 @@ static const yytype_uint8 yystos[] =
       21,    21,    21,    21,   118,    55,   123,   124,    21,   121,
      118,   118,   118,   118,   118,   118,    21,    89,   118,   118,
      118,   135,     0,    98,    89,    81,    89,   109,   118,   118,
-      57,    58,    62,    63,    64,    66,    67,    69,    70,    71,
-      82,    83,    84,    85,    86,    91,    92,   118,   118,   135,
-      95,   135,   135,   135,   135,    95,   118,   118,    38,   124,
-     128,    35,    67,    68,    21,    46,    81,   118,    46,    81,
-      45,   129,    48,   124,    95,    40,    46,    40,    46,    40,
-      46,    40,    46,    77,    78,   130,    21,    90,    94,    99,
-     109,   118,   109,   118,    45,    81,   115,   118,   118,   118,
+      57,    58,    62,    63,    64,    66,    69,    70,    71,    82,
+      83,    84,    85,    86,    91,    92,   118,   118,   135,    95,
+     135,   135,   135,   135,    95,   118,   118,    38,   124,   128,
+      35,    67,    68,    21,    46,    81,   118,    46,    81,    45,
+     129,    48,   124,    95,    40,    46,    40,    46,    40,    46,
+      40,    46,    77,    78,   130,    21,    90,    94,    99,   109,
+     118,   109,   118,    45,    81,   115,   118,   118,   118,   118,
+     118,   118,   118,   118,   118,   118,   118,   118,   118,   118,
+     118,   118,    90,   118,    90,    21,   118,   114,    21,   118,
+     118,   118,   118,    46,    81,   118,   118,   114,   118,    21,
      118,   118,   118,   118,   118,   118,   118,   118,   118,   118,
-     118,   118,   118,   118,    90,   118,    90,    21,   118,   114,
-      21,   118,   118,   118,   118,    46,    81,   118,   118,   114,
-     118,    21,   118,   118,   118,   118,   118,   118,   118,   118,
-     118,   118,   114,    90,    95,    90,   115,    90,    98,   114,
-     118,    21,   132,   118,   118,   132,    40,    40,    40,    40,
-     131,   135,   116,    27,    46,   116,   101,   119,    95,    98,
-      98,   118,   118,   118,   118,   132,    90,    98,   102,   115,
-      46,   118,   115,   115,    21,    95,   133,   133,    98,    25,
-     118,   115,    25,    50,   114,    29,    50,   106,   107,   113,
-      21,   116,   116,   133,   115,   116,   116,   105,   106,   108,
-     113,   114,   107,   115,   109,   116,   116,   115,   115,   108,
-     115,   109,   101,    50,   104,    45,    25,   115,    25,    25,
-      25,    45,   115,   114,   115,   114,    25,   114,   101,   102,
-     116,   115,   115
+     114,    90,    95,    90,   115,    90,    98,   114,   118,    21,
+     132,   118,   118,   132,    40,    40,    40,    40,   131,   135,
+     116,    27,    46,   116,   101,   119,    95,    98,    98,   118,
+     118,   118,   118,   132,    90,    98,   102,   115,    46,   118,
+     115,   115,    21,    95,   133,   133,    98,    25,   118,   115,
+      25,    50,   114,    29,    50,   106,   107,   113,    21,   116,
+     116,   133,   115,   116,   116,   105,   106,   108,   113,   114,
+     107,   115,   109,   116,   116,   115,   115,   108,   115,   109,
+     101,    50,   104,    45,    25,   115,    25,    25,    25,    45,
+     115,   114,   115,   114,    25,   114,   101,   102,   116,   115,
+     115
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2552,267 +2544,262 @@ yyreduce:
 
   case 81:
 #line 432 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_after); ;}
+    { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
   case 82:
 #line 433 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_concat); ;}
+    { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
   case 83:
 #line 434 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_contains); ;}
+    { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
   case 84:
 #line 435 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_starts); ;}
+    { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
   case 85:
 #line 436 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
+    { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
   case 86:
 #line 437 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
+    { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 87:
 #line 438 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
+    { (yyval.code) = g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
   case 88:
 #line 439 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
+    { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
   case 89:
 #line 440 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_intersects); ;}
+    { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
   case 90:
 #line 441 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_within); ;}
+    { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
   case 91:
 #line 442 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_charOf); ;}
+    { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
   case 92:
 #line 443 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_charToOf); ;}
+    { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
   case 93:
 #line 444 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_itemOf); ;}
+    { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
   case 94:
 #line 445 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_itemToOf); ;}
+    { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
   case 95:
 #line 446 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_lineOf); ;}
+    { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
   case 96:
 #line 447 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_lineToOf); ;}
+    { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
   case 97:
 #line 448 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_wordOf); ;}
-    break;
-
-  case 98:
-#line 449 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
-  case 99:
-#line 452 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 451 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
-  case 102:
-#line 455 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 454 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
-  case 103:
-#line 456 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 455 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeConst(0); // Push fake value on stack
 							  g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
-  case 106:
-#line 460 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 459 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 107:
-#line 463 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 462 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 108:
-#line 466 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 465 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code2(g_lingo->c_voidpush, g_lingo->_builtins[*(yyvsp[(1) - (1)].s)]->u.func);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
+  case 108:
+#line 468 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
+    break;
+
   case 109:
 #line 469 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
+    { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
   case 110:
 #line 470 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
+    { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
   case 111:
 #line 471 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
+    { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
   case 112:
 #line 472 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
+    { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
   case 113:
 #line 473 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_open); ;}
+    { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
   case 114:
 #line 474 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
+    { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;}
     break;
 
   case 115:
-#line 475 "engines/director/lingo/lingo-gr.y"
-    { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;}
+#line 477 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 116:
 #line 478 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
+    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 117:
-#line 479 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
+#line 481 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 118:
 #line 482 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
+    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 119:
-#line 483 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
+#line 493 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
   case 120:
 #line 494 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gotoloop); ;}
+    { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
   case 121:
 #line 495 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gotonext); ;}
+    { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
   case 122:
 #line 496 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gotoprevious); ;}
-    break;
-
-  case 123:
-#line 497 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 124:
-#line 500 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 499 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 125:
-#line 503 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 502 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 130:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 515 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
-  case 131:
-#line 517 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 516 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 132:
-#line 520 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 519 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 133:
-#line 523 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 522 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 134:
-#line 526 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 525 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
-  case 135:
-#line 526 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 525 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 136:
-#line 556 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 555 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 137:
-#line 557 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 556 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeConst(0); // Push fake value on stack
 			g_lingo->code1(g_lingo->c_procret);
@@ -2820,38 +2807,38 @@ yyreduce:
 			g_lingo->_indef = false; ;}
     break;
 
-  case 138:
-#line 562 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 561 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));
 		;}
     break;
 
-  case 139:
-#line 565 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 564 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
-  case 140:
-#line 566 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 565 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_procret);
 			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory);
 			g_lingo->_indef = false; ;}
     break;
 
-  case 141:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 569 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 142:
-#line 571 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 570 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_ignoreMe = true; ;}
     break;
 
-  case 143:
-#line 571 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 570 "engines/director/lingo/lingo-gr.y"
     {
 				g_lingo->codeConst(0); // Push fake value on stack
 				g_lingo->code1(g_lingo->c_procret);
@@ -2863,33 +2850,33 @@ yyreduce:
 			;}
     break;
 
+  case 143:
+#line 580 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = 0; ;}
+    break;
+
   case 144:
 #line 581 "engines/director/lingo/lingo-gr.y"
-    { (yyval.narg) = 0; ;}
+    { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
   case 145:
 #line 582 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
+    { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 146:
 #line 583 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
-    break;
-
-  case 147:
-#line 584 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 148:
-#line 586 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 585 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
-  case 149:
-#line 590 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 589 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str());
@@ -2898,24 +2885,24 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 150:
-#line 598 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 597 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 151:
-#line 599 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 598 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 152:
-#line 600 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 599 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 2919 "engines/director/lingo/lingo-gr.cpp"
+#line 2906 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3129,6 +3116,6 @@ yyreturn:
 }
 
 
-#line 603 "engines/director/lingo/lingo-gr.y"
+#line 602 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index d0fec59..a6f7e08 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -429,7 +429,6 @@ expr: INT		{ $$ = g_lingo->codeConst($1); }
 	| expr tOR expr				{ g_lingo->code1(g_lingo->c_or); }
 	| tNOT expr  %prec UNARY	{ g_lingo->code1(g_lingo->c_not); }
 	| expr '&' expr				{ g_lingo->code1(g_lingo->c_ampersand); }
-	| expr tAFTER expr			{ g_lingo->code1(g_lingo->c_after); }
 	| expr tCONCAT expr			{ g_lingo->code1(g_lingo->c_concat); }
 	| expr tCONTAINS expr		{ g_lingo->code1(g_lingo->c_contains); }
 	| expr tSTARTS expr			{ g_lingo->code1(g_lingo->c_starts); }


Commit: b7e937a2d54a86a168c755570ccbd9a8f9462dbf
    https://github.com/scummvm/scummvm/commit/b7e937a2d54a86a168c755570ccbd9a8f9462dbf
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-23T19:39:50+01:00

Commit Message:
DIRECTOR: Lingo: Fix macro grammar parcing. Removes 2 more reduce/reduce

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 3271838..e82270e 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -520,7 +520,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  112
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1548
+#define YYLAST   1601
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  96
@@ -596,8 +596,8 @@ static const yytype_uint16 yyprhs[] =
      436,   441,   448,   453,   456,   460,   462,   466,   468,   472,
      475,   478,   481,   484,   488,   491,   494,   496,   500,   503,
      506,   509,   513,   516,   517,   521,   522,   531,   534,   535,
-     544,   545,   546,   557,   558,   560,   564,   569,   570,   574,
-     575,   577
+     544,   545,   546,   557,   558,   560,   564,   569,   570,   573,
+     574,   576
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -660,8 +660,7 @@ static const yytype_int16 yyrhs[] =
       98,   133,   116,    -1,    -1,    -1,    79,    21,   130,   114,
      131,   132,    98,   133,   116,    25,    -1,    -1,    21,    -1,
      132,    95,    21,    -1,   132,    98,    95,    21,    -1,    -1,
-      21,   114,   135,    -1,    -1,   118,    -1,   135,    95,   118,
-      -1
+      21,   135,    -1,    -1,   118,    -1,   135,    95,   118,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -771,7 +770,7 @@ static const yytype_uint8 yyr2[] =
        4,     6,     4,     2,     3,     1,     3,     1,     3,     2,
        2,     2,     2,     3,     2,     2,     1,     3,     2,     2,
        2,     3,     2,     0,     3,     0,     8,     2,     0,     8,
-       0,     0,    10,     0,     1,     3,     4,     0,     3,     0,
+       0,     0,    10,     0,     1,     3,     4,     0,     2,     0,
        1,     3
 };
 
@@ -781,20 +780,20 @@ static const yytype_uint8 yyr2[] =
 static const yytype_uint8 yydefact[] =
 {
        0,     0,    57,    64,     0,    58,    61,   107,     0,   149,
-       0,    51,    60,    59,   133,   102,     0,     0,    49,     0,
+       0,    63,    60,    59,   133,   102,     0,     0,    49,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      149,     0,     3,    66,    23,    11,    24,     0,     0,     0,
        0,    21,     8,    99,   100,     7,     9,     5,     4,    63,
        0,    66,    65,   106,   105,   149,   150,   109,   149,   149,
-     149,   149,   101,   115,   103,     0,   119,     0,   120,     0,
+     148,   149,   101,   115,   103,     0,   119,     0,   120,     0,
      121,   126,   122,   124,   135,    98,     0,    47,     0,     0,
        0,     0,   137,   138,   113,   129,   130,   132,   117,   104,
       79,     0,     0,     0,     0,     0,   140,     0,    84,    85,
        0,     0,     1,     6,     0,     0,     0,     0,    44,    52,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   150,     0,     0,
-     114,     0,   148,   134,     0,   125,   128,     0,   123,    51,
+       0,     0,     0,     0,     0,     0,   149,     0,   150,     0,
+       0,   114,     0,   134,     0,   125,   128,     0,   123,    51,
        0,     0,     0,    48,     0,     0,     0,     0,     0,    56,
       51,     0,   131,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    51,     0,    86,    87,     2,     0,
@@ -820,382 +819,394 @@ static const yytype_uint8 yydefact[] =
 static const yytype_int16 yydefgoto[] =
 {
       -1,    41,   265,    42,    61,    44,   266,    46,   312,   295,
-     296,   286,   297,   117,    47,    48,    49,   287,    70,   185,
+     296,   286,   297,   117,    47,    48,    49,   287,   207,   185,
      250,    50,    51,   255,    74,    99,    53,    82,    83,    54,
-      71,    55,   149,   160,   174,   248,   240,   274,    56,    67
+      71,    55,   149,   160,   174,   248,   240,   274,    56,   142
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -271
+#define YYPACT_NINF -240
 static const yytype_int16 yypact[] =
 {
-     320,   -65,  -271,  -271,   218,  -271,  -271,   218,   218,   910,
-       8,  1456,  -271,  -271,  -271,    51,    35,   809,  -271,    76,
-     218,    96,    75,    86,    89,    97,   218,   875,   118,   218,
-     218,   218,   218,   218,   218,   120,    60,   218,   218,   218,
-     218,     3,  -271,    13,  -271,  -271,  -271,    61,    70,   976,
-     218,  1425,  -271,  -271,  -271,  -271,  -271,  -271,  -271,    65,
-     218,  -271,  1425,  1425,  1425,   218,  1425,    62,   218,   218,
-     218,   218,  -271,  -271,    66,   218,  -271,   218,  -271,   122,
-    -271,  1425,    27,  -271,  -271,   944,   142,  -271,   -32,   218,
-     -26,   131,  -271,  -271,  1270,  -271,    27,  -271,  -271,    82,
-     -10,  1015,  1047,  1079,  1111,  1301,  -271,   158,   -10,   -10,
-    1363,    52,  -271,   403,   976,   218,   976,   135,  1394,  1425,
-     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
-     218,   218,   218,   218,   218,   218,   944,  1363,     5,   218,
-      62,    19,    62,    62,   160,  1425,  1425,   218,  -271,  -271,
-     162,   218,   218,  -271,   218,   218,   712,   218,   218,  -271,
-    -271,   218,  -271,   163,   218,   218,   218,   218,   218,   218,
-     218,   218,   218,   218,  -271,    47,  -271,  -271,  -271,    98,
-    1425,    99,  1332,   -65,   218,  -271,    20,    20,    20,   -10,
-     -10,   -10,  1425,    20,    20,   133,   172,   172,   -10,   -10,
-    1425,  1425,  -271,  1425,  -271,  -271,  1425,   166,  -271,  1425,
-    1425,  1425,  1425,   218,   218,  1425,  1425,   166,  1425,  -271,
-    1425,  1143,  1425,  1175,  1425,  1207,  1425,  1239,  1425,  1425,
-    -271,  -271,   218,  -271,    -2,  -271,  -271,   735,  1425,  -271,
-       4,  1425,  1425,     4,   218,   218,   218,   218,   166,    48,
-     569,   144,   218,   569,  -271,  -271,   170,   100,   100,  1425,
-    1425,  1425,  1425,     4,  -271,  -271,  -271,   167,   218,  1425,
-     -14,   -13,  -271,   177,  -271,  -271,   100,  -271,  1425,  -271,
-    -271,  -271,   164,  -271,  -271,   164,  -271,   976,  -271,   569,
-     569,  -271,  -271,   569,   569,   164,   164,  -271,   976,   735,
-    -271,   150,   156,   486,   569,   178,   179,  -271,   181,   165,
-    -271,  -271,  -271,  -271,  -271,   183,  -271,  -271,  -271,  -271,
-    -271,   735,  -271,   652,  -271,   652,  -271,  -271,   569,  -271,
-    -271
+     326,   -69,  -240,  -240,  1001,  -240,  -240,  1001,  1001,  1067,
+      44,   409,  -240,  -240,  -240,   -20,    46,   900,  -240,    62,
+    1001,    58,    74,    67,    73,    75,  1001,   966,    80,  1001,
+    1001,  1001,  1001,  1001,  1001,    87,   -10,  1001,  1001,  1001,
+    1001,    14,  -240,    16,  -240,  -240,  -240,    29,    33,  1092,
+    1001,  1509,  -240,  -240,  -240,  -240,  -240,  -240,  -240,    30,
+    1001,  -240,  1509,  1509,  1509,  1001,  1509,    45,  1001,  1001,
+      45,  1001,  -240,  -240,    47,  1001,  -240,  1001,  -240,    82,
+    -240,  1509,     9,  -240,  -240,   377,   123,  -240,   -39,  1001,
+     -24,   100,  -240,  -240,  1354,  -240,     9,  -240,  -240,    51,
+     -11,  1131,  1163,  1195,  1227,  1385,  -240,   126,   -11,   -11,
+    1447,    17,  -240,   494,  1092,  1001,  1092,   104,  1478,  1509,
+    1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,
+    1001,  1001,  1001,  1001,  1001,  1001,  1001,   377,  1447,   -35,
+    1001,    45,   -31,    45,   129,  1509,  1509,  1001,  -240,  -240,
+     130,  1001,  1001,  -240,  1001,  1001,   803,  1001,  1001,  -240,
+    -240,  1001,  -240,   133,  1001,  1001,  1001,  1001,  1001,  1001,
+    1001,  1001,  1001,  1001,  -240,     8,  -240,  -240,  -240,    70,
+    1509,    71,  1416,   -69,  1001,  -240,   863,   863,   863,   -11,
+     -11,   -11,  1509,   863,   863,  1061,   173,   173,   -11,   -11,
+    1509,  1509,  -240,  1509,  -240,  -240,  1509,   136,  -240,  1509,
+    1509,  1509,  1509,  1001,  1001,  1509,  1509,   136,  1509,  -240,
+    1509,   140,  1509,  1259,  1509,  1291,  1509,  1323,  1509,  1509,
+    -240,  -240,  1001,  -240,     2,  -240,  -240,   826,  1509,  -240,
+     -43,  1509,  1509,   -43,  1001,  1001,  1001,  1001,   136,    10,
+     660,   117,  1001,   660,  -240,  -240,   143,    81,    81,  1509,
+    1509,  1509,  1509,   -43,  -240,  -240,  -240,   152,  1001,  1509,
+     -14,   -26,  -240,   158,  -240,  -240,    81,  -240,  1509,  -240,
+    -240,  -240,   153,  -240,  -240,   153,  -240,  1092,  -240,   660,
+     660,  -240,  -240,   660,   660,   153,   153,  -240,  1092,   826,
+    -240,   131,   138,   577,   660,   159,   163,  -240,   164,   145,
+    -240,  -240,  -240,  -240,  -240,   166,  -240,  -240,  -240,  -240,
+    -240,   826,  -240,   743,  -240,   743,  -240,  -240,   660,  -240,
+    -240
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -271,  -271,    11,   107,     6,  -236,     0,  -271,  -271,  -271,
-     -60,  -270,   -83,  -112,  -271,  -271,  -271,  -222,  -106,     2,
-    -217,  -271,     1,     7,  -271,  -271,  -271,   194,    -3,  -271,
-    -271,  -271,  -271,  -271,  -271,  -271,  -195,  -178,  -271,   -23
+    -240,  -240,    12,    83,    25,  -236,     0,  -240,  -240,  -240,
+     -78,  -212,  -101,  -112,  -240,  -240,  -240,  -239,   -92,     7,
+    -182,  -240,     1,    26,  -240,  -240,  -240,   172,    -7,  -240,
+    -240,  -240,  -240,  -240,  -240,  -240,  -211,  -214,  -240,     6
 };
 
 /* 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 -64
+#define YYTABLE_NINF -150
 static const yytype_int16 yytable[] =
 {
-      45,   254,   179,   112,   181,    62,    43,    52,    63,    64,
-      66,   280,    58,   -10,   154,   300,   283,   111,    81,   253,
-     157,    85,   243,    57,    97,   251,   300,    94,    81,    68,
-     100,   101,   102,   103,   104,   105,   281,   284,   108,   109,
-     110,    66,   138,   207,   252,   140,   141,   142,   143,   155,
-     118,   119,   113,   263,   217,   158,    73,   289,   290,   126,
-     298,   136,   293,   310,   294,    77,   137,    79,   230,    66,
-      66,    66,    66,   298,   303,   304,   145,   237,   146,   148,
-     275,   134,   135,   123,   124,   326,   125,    88,    89,   126,
-     156,    57,    57,   162,    72,   202,    90,    84,   291,   256,
-     139,   -10,   129,   130,   131,   132,   133,    91,   328,   204,
-      92,   134,   135,    45,   139,   118,   180,   182,    93,    43,
-      52,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   231,   264,    98,
-     203,   106,   232,   139,    86,    87,   177,   139,   206,   107,
-     114,   115,   209,   210,    69,   211,   212,   139,   215,   216,
-     147,   144,   218,   153,   282,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   302,   159,   163,   299,   175,
-     183,   205,   234,   208,   219,   238,   309,   239,   233,   235,
-     268,   272,   277,   283,   236,   273,   123,   124,   288,   125,
-     311,   313,   126,   316,   317,   321,   318,   323,   324,   249,
-     319,   285,   307,   325,   241,   242,   130,   131,   132,   133,
-     178,    96,     0,     0,   134,   135,     0,     0,     0,     2,
-       3,     4,     5,    66,     6,   123,   124,     0,   125,    59,
-      12,   126,    13,     0,     0,   259,   260,   261,   262,     0,
-       0,   257,   267,   269,   258,   270,   271,   132,   133,     0,
-      60,     0,    22,   134,   135,     0,     0,     0,     0,   278,
-       0,   279,     0,     0,   276,     0,     0,     0,     0,     0,
-     292,     0,     0,    29,     0,     0,     0,   301,   118,     0,
-      30,    31,    32,    33,    34,   305,   306,   308,     0,   118,
-       0,    37,    38,     0,     0,     0,   315,    39,     0,     0,
-       0,    40,   320,     0,   322,     0,     0,     0,     0,     0,
-      -6,     1,     0,   327,     0,   327,     0,     0,     0,   329,
-     330,     2,     3,     4,     5,     0,     6,     7,     8,     9,
-      10,    11,    12,     0,    13,     0,    14,     0,     0,     0,
-      15,     0,    16,    17,    18,     0,     0,    19,     0,     0,
+      45,   254,   179,   283,   181,    62,   243,   154,    63,    64,
+      66,   280,    66,    58,   112,    67,   -10,    70,    81,    57,
+      97,    85,   157,    72,   284,    43,    52,    94,    81,   251,
+     100,   101,   102,   103,   104,   105,   281,   263,   108,   109,
+     110,    66,   155,   298,   275,    57,   111,    77,   252,    79,
+     118,   119,   256,   113,   253,   202,   298,   158,   126,   204,
+     140,   137,   291,   310,   140,    68,   138,    73,   217,    66,
+     138,   139,    66,   300,   141,   148,   145,   143,   146,   107,
+     134,   135,   230,    84,   300,   326,    88,    89,    91,   162,
+     156,   237,   289,   290,    92,    90,    93,   293,   231,   294,
+     264,    98,    57,   232,   -10,   140,    86,    87,   106,   303,
+     304,   177,   140,    45,   115,   118,   180,   182,   114,   136,
+     147,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,    66,    43,    52,
+     140,   203,   144,   328,   153,   159,   163,   175,   206,   183,
+     205,   208,   209,   210,   219,   211,   212,   239,   215,   216,
+     233,   235,   218,   268,   272,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   302,   273,   277,   282,   288,
+     244,   311,   283,   313,   316,   238,   309,   234,   317,   318,
+     319,   324,   299,   285,   307,   236,   178,   120,   121,    96,
+       0,     0,   122,   123,   124,     0,   125,     0,     0,   126,
+     127,   128,     0,     0,   241,   242,     0,     0,     0,   321,
+       0,   323,   129,   130,   131,   132,   133,   325,     0,     0,
+       0,   134,   135,    66,     0,     0,   123,   124,   249,   125,
+       0,     0,   126,     0,     0,   259,   260,   261,   262,     0,
+       0,     0,   257,   269,     0,   258,     0,   267,   132,   133,
+     270,   271,     0,     0,   134,   135,     0,     0,     0,   278,
+       0,     0,     0,     0,     0,   276,   279,     0,     0,     0,
+       0,     0,     0,     0,     0,   292,     0,     0,   118,     0,
+       0,     0,   301,     0,     0,     0,     0,     0,     0,   118,
+     305,   306,   308,     0,     0,     0,     0,     0,     0,     0,
+       0,   315,     0,     0,     0,     0,     0,   320,     0,   322,
+       0,     0,     0,   327,     0,   327,    -6,     1,     0,     0,
+       0,     0,     0,     0,   329,   330,     0,     2,     3,     4,
+       5,     0,     6,     7,     8,     9,    10,    11,    12,     0,
+      13,     0,    14,     0,     0,     0,    15,     0,    16,    17,
+      18,     0,     0,    19,     0,     0,     0,     0,    20,    21,
+      22,     0,     0,    23,     0,     0,     0,    24,    25,    26,
+      27,     0,    28,     0,     0,     0,     0,     0,     0,     0,
+       0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
+      32,    33,    34,     0,     0,    35,    36,     0,     0,    37,
+      38,     0,   150,     0,    -6,    39,     0,     0,     0,    40,
+       2,     3,     4,     5,     0,     6,     0,     0,     0,     0,
+      59,    12,     0,    13,   120,   121,     0,     0,     0,   122,
+     123,   124,     0,   125,   151,   152,   126,   127,   128,     0,
+       0,    60,     0,    22,     0,     0,     0,     0,     0,   129,
+     130,   131,   132,   133,     0,     0,     0,     0,   134,   135,
+       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
+       0,    30,    31,    32,    33,    34,     0,     0,     0,     0,
+       0,     0,    37,    38,     0,     0,     0,     0,    69,     0,
+       0,     0,    40,     0,  -149,     2,     3,     4,     5,     0,
+       6,     7,     8,     9,    10,    11,    12,     0,    13,     0,
+      14,     0,     0,     0,    15,     0,    16,    17,    18,     0,
+       0,    19,     0,     0,     0,     0,    20,    21,    22,     0,
+       0,    23,     0,     0,     0,    24,    25,    26,    27,     0,
+      28,     0,     0,     0,     0,     0,     0,     0,     0,    29,
+       0,     0,     0,     0,     0,     0,    30,    31,    32,    33,
+      34,     0,     0,    35,    36,     0,     0,    37,    38,     0,
+       0,     0,     0,    39,     0,     0,     0,    40,     2,     3,
+       4,     5,     0,     6,     7,     8,     9,    10,    59,    12,
+       0,    13,   314,    14,     0,     0,     0,    15,     0,    16,
+      17,    18,     0,     0,     0,     0,     0,     0,     0,    20,
+      21,    22,     0,     0,    23,     0,     0,     0,     0,     0,
+      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
+       0,     0,    29,     0,     0,     0,     0,     0,     0,    30,
+      31,    32,    33,    34,     0,     0,     0,    36,     0,     0,
+      37,    38,     0,     0,     0,    57,    39,     0,     0,     0,
+      40,     2,     3,     4,     5,     0,     6,     7,     8,     9,
+      10,    59,    12,     0,    13,     0,    14,     0,     0,     0,
+      15,     0,    16,    17,    18,     0,     0,     0,     0,     0,
        0,     0,    20,    21,    22,     0,     0,    23,     0,     0,
-       0,    24,    25,    26,    27,     0,    28,     0,     0,     0,
+       0,     0,     0,    26,    27,     0,    28,     0,     0,     0,
        0,     0,     0,     0,     0,    29,     0,     0,     0,     0,
-       0,     0,    30,    31,    32,    33,    34,     0,     0,    35,
-      36,     0,     0,    37,    38,     0,     0,     0,    -6,    39,
+       0,     0,    30,    31,    32,    33,    34,     0,     0,     0,
+      36,     0,     0,    37,    38,     0,     0,     0,    57,    39,
        0,     0,     0,    40,     2,     3,     4,     5,     0,     6,
-       7,     8,     9,    10,    11,    12,     0,    13,     0,    14,
+       7,     8,     9,    10,    59,    12,     0,    13,     0,    14,
        0,     0,     0,    15,     0,    16,    17,    18,     0,     0,
-      19,     0,     0,     0,     0,    20,    21,    22,     0,     0,
-      23,     0,     0,     0,    24,    25,    26,    27,     0,    28,
+       0,     0,     0,     0,     0,    20,    21,    22,     0,     0,
+      23,     0,     0,     0,     0,     0,    26,    27,     0,    28,
        0,     0,     0,     0,     0,     0,     0,     0,    29,     0,
        0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
-       0,     0,    35,    36,     0,     0,    37,    38,     0,     0,
+       0,     0,     0,    36,     0,     0,    37,    38,     0,     0,
        0,     0,    39,     0,     0,     0,    40,     2,     3,     4,
-       5,     0,     6,     7,     8,     9,    10,    59,    12,     0,
-      13,   314,    14,     0,     0,     0,    15,     0,    16,    17,
-      18,     0,     0,     0,     0,     0,     0,     0,    20,    21,
-      22,     0,     0,    23,     0,     0,     0,     0,     0,    26,
-      27,     0,    28,     0,     0,     0,     0,     0,     0,     0,
-       0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
+       5,     0,     6,     7,     8,     9,    10,    59,    12,   213,
+      13,     0,    14,     0,     0,     0,    15,     0,    16,    17,
+     120,   121,     0,     0,     0,   122,   123,   124,    20,   125,
+      22,     0,   126,   127,   128,     0,     0,     0,     0,    26,
+      27,     0,    28,     0,   214,   129,   130,   131,   132,   133,
+       0,    29,     0,     0,   134,   135,     0,     0,    30,    31,
       32,    33,    34,     0,     0,     0,    36,     0,     0,    37,
-      38,     0,     0,     0,    57,    39,     0,     0,     0,    40,
-       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
-      59,    12,     0,    13,     0,    14,     0,     0,     0,    15,
-       0,    16,    17,    18,     0,     0,     0,     0,     0,     0,
-       0,    20,    21,    22,     0,     0,    23,     0,     0,     0,
-       0,     0,    26,    27,     0,    28,     0,     0,     0,     0,
-       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
-       0,    30,    31,    32,    33,    34,     0,     0,     0,    36,
-       0,     0,    37,    38,     0,     0,     0,    57,    39,     0,
-       0,     0,    40,     2,     3,     4,     5,     0,     6,     7,
-       8,     9,    10,    59,    12,     0,    13,     0,    14,     0,
-       0,     0,    15,     0,    16,    17,    18,     0,     0,     0,
-       0,     0,     0,     0,    20,    21,    22,     0,     0,    23,
-       0,     0,     0,     0,     0,    26,    27,     0,    28,     0,
-       0,     0,     0,     0,     0,     0,     0,    29,     0,     0,
-       0,     0,     0,     0,    30,    31,    32,    33,    34,     0,
-       0,     0,    36,     0,     0,    37,    38,     0,     0,     0,
-       0,    39,     0,     0,     0,    40,     2,     3,     4,     5,
-       0,     6,     7,     8,     9,    10,    59,    12,   213,    13,
-       0,    14,     0,     0,     0,    15,     0,    16,    17,   120,
-     121,     0,     0,     0,   122,   123,   124,    20,   125,    22,
-       0,   126,   127,   128,     0,     0,     0,     0,    26,    27,
-       0,    28,     0,   214,   129,   130,   131,   132,   133,     0,
-      29,     0,     0,   134,   135,     0,     0,    30,    31,    32,
-      33,    34,     0,     0,     0,    36,     0,     0,    37,    38,
-       2,     3,     4,     5,    39,     6,     0,     0,    40,     0,
-      59,    12,     0,    13,     0,     0,     0,     0,     0,     0,
-      75,     0,     0,     0,     0,    76,     0,    77,    78,    79,
-      80,    60,     0,    22,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
-       0,    30,    31,    32,    33,    34,     2,     3,     4,     5,
-       0,     6,    37,    38,     0,     0,    59,    12,    39,    13,
-       0,     0,    40,     0,     0,     0,    75,     0,     0,     0,
-       0,     0,     0,    77,     0,    79,     0,    60,     0,    22,
-       0,     2,     3,     4,     5,     0,     6,     0,     0,     0,
-      95,    59,    12,     0,    13,     0,     0,     0,     0,     0,
-      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,    60,     0,    22,     0,     0,     0,    37,    38,
-       0,     0,     0,     0,    39,     0,     0,     0,    40,     0,
-       0,     0,     0,     0,     0,    29,     0,     0,     0,   150,
+      38,     2,     3,     4,     5,    39,     6,     0,     0,    40,
+       0,    59,    12,     0,    13,     0,   123,   124,     0,   125,
+       0,    75,   126,     0,     0,     0,    76,     0,    77,    78,
+      79,    80,    60,     0,    22,   129,   130,   131,   132,   133,
+       0,     0,     0,     0,   134,   135,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    29,     0,     0,     0,     0,
        0,     0,    30,    31,    32,    33,    34,     2,     3,     4,
-       5,     0,     6,    37,    38,     0,     0,    59,    12,    65,
-      13,   120,   121,    40,     0,     0,   122,   123,   124,     0,
-     125,   151,   152,   126,   127,   128,     0,     0,    60,     0,
-      22,     0,     0,     0,     0,     0,   129,   130,   131,   132,
-     133,     0,     0,     0,     0,   134,   135,     0,     0,     0,
+       5,     0,     6,    37,    38,     0,     0,    59,    12,    39,
+      13,     0,     0,    40,     0,     0,     0,    75,     0,     0,
+       0,     0,     0,     0,    77,     0,    79,     0,    60,     0,
+      22,     0,     2,     3,     4,     5,     0,     6,     0,     0,
+       0,    95,    59,    12,     0,    13,     0,     0,     0,     0,
        0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
-      32,    33,    34,     0,     0,   164,     0,     0,     0,    37,
-      38,   165,     0,     0,     0,   116,     0,     0,     0,    40,
-       0,     0,   120,   121,     0,     0,     0,   122,   123,   124,
-       0,   125,     0,     0,   126,   127,   128,   166,     0,     0,
-       0,     0,     0,   167,     0,     0,     0,   129,   130,   131,
-     132,   133,     0,     0,   120,   121,   134,   135,     0,   122,
-     123,   124,     0,   125,     0,     0,   126,   127,   128,   168,
-       0,     0,     0,     0,     0,   169,     0,     0,     0,   129,
-     130,   131,   132,   133,     0,     0,   120,   121,   134,   135,
-       0,   122,   123,   124,     0,   125,     0,     0,   126,   127,
-     128,   170,     0,     0,     0,     0,     0,   171,     0,     0,
-       0,   129,   130,   131,   132,   133,     0,     0,   120,   121,
-     134,   135,     0,   122,   123,   124,     0,   125,     0,     0,
-     126,   127,   128,   244,     0,     0,     0,     0,     0,     0,
+      32,    33,    34,    60,     0,    22,     0,     0,     0,    37,
+      38,     0,     0,     0,     0,    39,     0,     0,     0,    40,
+       0,     0,     0,     0,     0,     0,    29,     0,     0,     0,
+       0,     0,     0,    30,    31,    32,    33,    34,     2,     3,
+       4,     5,     0,     6,    37,    38,     0,     0,    59,    12,
+      39,    13,     0,     0,    40,     0,     0,     0,     0,     0,
+       0,     0,     0,     2,     3,     4,     5,     0,     6,    60,
+       0,    22,     0,    59,    12,     0,    13,     0,     0,     0,
+       0,     0,     0,     0,   123,   124,     0,   125,     0,     0,
+     126,     0,    29,     0,    60,     0,    22,     0,     0,    30,
+      31,    32,    33,    34,   130,   131,   132,   133,     0,     0,
+      37,    38,   134,   135,     0,     0,    65,    29,     0,     0,
+      40,     0,     0,     0,    30,    31,    32,    33,    34,     0,
+       0,   164,     0,     0,     0,    37,    38,   165,     0,     0,
+       0,   116,     0,     0,     0,    40,     0,     0,   120,   121,
+       0,     0,     0,   122,   123,   124,     0,   125,     0,     0,
+     126,   127,   128,   166,     0,     0,     0,     0,     0,   167,
        0,     0,     0,   129,   130,   131,   132,   133,     0,     0,
      120,   121,   134,   135,     0,   122,   123,   124,     0,   125,
-       0,     0,   126,   127,   128,   245,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   129,   130,   131,   132,   133,
+       0,     0,   126,   127,   128,   168,     0,     0,     0,     0,
+       0,   169,     0,     0,     0,   129,   130,   131,   132,   133,
        0,     0,   120,   121,   134,   135,     0,   122,   123,   124,
-       0,   125,     0,     0,   126,   127,   128,   246,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   129,   130,   131,
+       0,   125,     0,     0,   126,   127,   128,   170,     0,     0,
+       0,     0,     0,   171,     0,     0,     0,   129,   130,   131,
      132,   133,     0,     0,   120,   121,   134,   135,     0,   122,
-     123,   124,     0,   125,     0,     0,   126,   127,   128,   247,
+     123,   124,     0,   125,     0,     0,   126,   127,   128,   245,
        0,     0,     0,     0,     0,     0,     0,     0,     0,   129,
      130,   131,   132,   133,     0,     0,   120,   121,   134,   135,
        0,   122,   123,   124,     0,   125,     0,     0,   126,   127,
-     128,     0,     0,     0,     0,     0,     0,     0,   161,     0,
-       0,   129,   130,   131,   132,   133,     0,   120,   121,     0,
-     134,   135,   122,   123,   124,     0,   125,     0,     0,   126,
-     127,   128,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   129,   130,   131,   132,   133,     0,   120,   121,
-       0,   134,   135,   122,   123,   124,     0,   125,     0,     0,
-     126,   127,   128,     0,     0,     0,     0,     0,   172,   173,
-       0,     0,     0,   129,   130,   131,   132,   133,     0,   120,
-     121,     0,   134,   135,   122,   123,   124,     0,   125,     0,
-       0,   126,   127,   128,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   184,   129,   130,   131,   132,   133,     0,
-     120,   121,   176,   134,   135,   122,   123,   124,     0,   125,
+     128,   246,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   129,   130,   131,   132,   133,     0,     0,   120,   121,
+     134,   135,     0,   122,   123,   124,     0,   125,     0,     0,
+     126,   127,   128,   247,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   129,   130,   131,   132,   133,     0,     0,
+     120,   121,   134,   135,     0,   122,   123,   124,     0,   125,
        0,     0,   126,   127,   128,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   129,   130,   131,   132,   133,
-       0,   120,   121,   176,   134,   135,   122,   123,   124,     0,
+       0,     0,   161,     0,     0,   129,   130,   131,   132,   133,
+       0,   120,   121,     0,   134,   135,   122,   123,   124,     0,
      125,     0,     0,   126,   127,   128,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   184,   129,   130,   131,   132,
+       0,     0,     0,     0,     0,     0,   129,   130,   131,   132,
      133,     0,   120,   121,     0,   134,   135,   122,   123,   124,
        0,   125,     0,     0,   126,   127,   128,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   129,   130,   131,
-     132,   133,     0,   -63,   -63,     0,   134,   135,   -63,   -63,
-     -63,     0,   -63,     0,     0,   -63,   -63,   -63,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   -63,     0,
-       0,   -63,   -63,     0,     0,    69,     0,   -63,   -63
+       0,     0,   172,   173,     0,     0,     0,   129,   130,   131,
+     132,   133,     0,   120,   121,     0,   134,   135,   122,   123,
+     124,     0,   125,     0,     0,   126,   127,   128,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   184,   129,   130,
+     131,   132,   133,     0,   120,   121,   176,   134,   135,   122,
+     123,   124,     0,   125,     0,     0,   126,   127,   128,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   129,
+     130,   131,   132,   133,     0,   120,   121,   176,   134,   135,
+     122,   123,   124,     0,   125,     0,     0,   126,   127,   128,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   184,
+     129,   130,   131,   132,   133,     0,   120,   121,     0,   134,
+     135,   122,   123,   124,     0,   125,     0,     0,   126,   127,
+     128,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   129,   130,   131,   132,   133,     0,     0,     0,     0,
+     134,   135
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,   237,   114,     0,   116,     4,     0,     0,     7,     8,
-       9,    25,     1,     0,    46,   285,    29,    40,    17,   236,
-      46,    20,   217,    88,    27,    27,   296,    26,    27,    21,
-      29,    30,    31,    32,    33,    34,    50,    50,    37,    38,
-      39,    40,    65,   149,    46,    68,    69,    70,    71,    81,
-      49,    50,    41,   248,   160,    81,    21,   274,   275,    69,
-     282,    60,   279,   299,   281,    38,    65,    40,   174,    68,
-      69,    70,    71,   295,   291,   292,    75,   183,    77,    82,
-     258,    91,    92,    63,    64,   321,    66,    12,    13,    69,
-      89,    88,    88,    96,    43,    90,    21,    21,   276,    95,
-      95,    88,    82,    83,    84,    85,    86,    21,   325,    90,
-      21,    91,    92,   113,    95,   114,   115,   116,    21,   113,
-     113,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,    90,    90,    21,
-     139,    21,    95,    95,    48,    49,    94,    95,   147,    89,
-      89,    81,   151,   152,    89,   154,   155,    95,   157,   158,
-      38,    95,   161,    21,   270,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   287,    45,    95,   284,    21,
-      45,    21,   180,    21,    21,   184,   298,    21,    90,    90,
-      46,    21,    25,    29,   183,    95,    63,    64,    21,    66,
-      50,    45,    69,    25,    25,   311,    25,   313,    25,   232,
-      45,   271,   295,   319,   213,   214,    83,    84,    85,    86,
-     113,    27,    -1,    -1,    91,    92,    -1,    -1,    -1,    11,
-      12,    13,    14,   232,    16,    63,    64,    -1,    66,    21,
-      22,    69,    24,    -1,    -1,   244,   245,   246,   247,    -1,
-      -1,   240,   250,   252,   243,   253,   254,    85,    86,    -1,
-      42,    -1,    44,    91,    92,    -1,    -1,    -1,    -1,   268,
-      -1,   269,    -1,    -1,   263,    -1,    -1,    -1,    -1,    -1,
-     278,    -1,    -1,    65,    -1,    -1,    -1,   285,   287,    -1,
-      72,    73,    74,    75,    76,   293,   294,   295,    -1,   298,
-      -1,    83,    84,    -1,    -1,    -1,   304,    89,    -1,    -1,
-      -1,    93,   310,    -1,   312,    -1,    -1,    -1,    -1,    -1,
-       0,     1,    -1,   323,    -1,   325,    -1,    -1,    -1,   327,
-     328,    11,    12,    13,    14,    -1,    16,    17,    18,    19,
+       0,   237,   114,    29,   116,     4,   217,    46,     7,     8,
+       9,    25,    11,     1,     0,     9,     0,    11,    17,    88,
+      27,    20,    46,    43,    50,     0,     0,    26,    27,    27,
+      29,    30,    31,    32,    33,    34,    50,   248,    37,    38,
+      39,    40,    81,   282,   258,    88,    40,    38,    46,    40,
+      49,    50,    95,    41,   236,    90,   295,    81,    69,    90,
+      95,    60,   276,   299,    95,    21,    65,    21,   160,    68,
+      69,    65,    71,   285,    68,    82,    75,    71,    77,    89,
+      91,    92,   174,    21,   296,   321,    12,    13,    21,    96,
+      89,   183,   274,   275,    21,    21,    21,   279,    90,   281,
+      90,    21,    88,    95,    88,    95,    48,    49,    21,   291,
+     292,    94,    95,   113,    81,   114,   115,   116,    89,    89,
+      38,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   113,   113,
+      95,   140,    95,   325,    21,    45,    95,    21,   147,    45,
+      21,    21,   151,   152,    21,   154,   155,    21,   157,   158,
+      90,    90,   161,    46,    21,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   287,    95,    25,   270,    21,
+      40,    50,    29,    45,    25,   184,   298,   180,    25,    25,
+      45,    25,   284,   271,   295,   183,   113,    57,    58,    27,
+      -1,    -1,    62,    63,    64,    -1,    66,    -1,    -1,    69,
+      70,    71,    -1,    -1,   213,   214,    -1,    -1,    -1,   311,
+      -1,   313,    82,    83,    84,    85,    86,   319,    -1,    -1,
+      -1,    91,    92,   232,    -1,    -1,    63,    64,   232,    66,
+      -1,    -1,    69,    -1,    -1,   244,   245,   246,   247,    -1,
+      -1,    -1,   240,   252,    -1,   243,    -1,   250,    85,    86,
+     253,   254,    -1,    -1,    91,    92,    -1,    -1,    -1,   268,
+      -1,    -1,    -1,    -1,    -1,   263,   269,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   278,    -1,    -1,   287,    -1,
+      -1,    -1,   285,    -1,    -1,    -1,    -1,    -1,    -1,   298,
+     293,   294,   295,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   304,    -1,    -1,    -1,    -1,    -1,   310,    -1,   312,
+      -1,    -1,    -1,   323,    -1,   325,     0,     1,    -1,    -1,
+      -1,    -1,    -1,    -1,   327,   328,    -1,    11,    12,    13,
+      14,    -1,    16,    17,    18,    19,    20,    21,    22,    -1,
+      24,    -1,    26,    -1,    -1,    -1,    30,    -1,    32,    33,
+      34,    -1,    -1,    37,    -1,    -1,    -1,    -1,    42,    43,
+      44,    -1,    -1,    47,    -1,    -1,    -1,    51,    52,    53,
+      54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
+      74,    75,    76,    -1,    -1,    79,    80,    -1,    -1,    83,
+      84,    -1,    35,    -1,    88,    89,    -1,    -1,    -1,    93,
+      11,    12,    13,    14,    -1,    16,    -1,    -1,    -1,    -1,
+      21,    22,    -1,    24,    57,    58,    -1,    -1,    -1,    62,
+      63,    64,    -1,    66,    67,    68,    69,    70,    71,    -1,
+      -1,    42,    -1,    44,    -1,    -1,    -1,    -1,    -1,    82,
+      83,    84,    85,    86,    -1,    -1,    -1,    -1,    91,    92,
+      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+      -1,    72,    73,    74,    75,    76,    -1,    -1,    -1,    -1,
+      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    89,    -1,
+      -1,    -1,    93,    -1,    95,    11,    12,    13,    14,    -1,
+      16,    17,    18,    19,    20,    21,    22,    -1,    24,    -1,
+      26,    -1,    -1,    -1,    30,    -1,    32,    33,    34,    -1,
+      -1,    37,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,
+      -1,    47,    -1,    -1,    -1,    51,    52,    53,    54,    -1,
+      56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
+      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,
+      76,    -1,    -1,    79,    80,    -1,    -1,    83,    84,    -1,
+      -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    11,    12,
+      13,    14,    -1,    16,    17,    18,    19,    20,    21,    22,
+      -1,    24,    25,    26,    -1,    -1,    -1,    30,    -1,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
+      43,    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,
+      53,    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+      73,    74,    75,    76,    -1,    -1,    -1,    80,    -1,    -1,
+      83,    84,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,
+      93,    11,    12,    13,    14,    -1,    16,    17,    18,    19,
       20,    21,    22,    -1,    24,    -1,    26,    -1,    -1,    -1,
-      30,    -1,    32,    33,    34,    -1,    -1,    37,    -1,    -1,
+      30,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    42,    43,    44,    -1,    -1,    47,    -1,    -1,
-      -1,    51,    52,    53,    54,    -1,    56,    -1,    -1,    -1,
+      -1,    -1,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
-      -1,    -1,    72,    73,    74,    75,    76,    -1,    -1,    79,
+      -1,    -1,    72,    73,    74,    75,    76,    -1,    -1,    -1,
       80,    -1,    -1,    83,    84,    -1,    -1,    -1,    88,    89,
       -1,    -1,    -1,    93,    11,    12,    13,    14,    -1,    16,
       17,    18,    19,    20,    21,    22,    -1,    24,    -1,    26,
       -1,    -1,    -1,    30,    -1,    32,    33,    34,    -1,    -1,
-      37,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,    -1,
-      47,    -1,    -1,    -1,    51,    52,    53,    54,    -1,    56,
+      -1,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,    -1,
+      47,    -1,    -1,    -1,    -1,    -1,    53,    54,    -1,    56,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
       -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,
-      -1,    -1,    79,    80,    -1,    -1,    83,    84,    -1,    -1,
+      -1,    -1,    -1,    80,    -1,    -1,    83,    84,    -1,    -1,
       -1,    -1,    89,    -1,    -1,    -1,    93,    11,    12,    13,
-      14,    -1,    16,    17,    18,    19,    20,    21,    22,    -1,
-      24,    25,    26,    -1,    -1,    -1,    30,    -1,    32,    33,
-      34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,
-      44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    53,
-      54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
+      14,    -1,    16,    17,    18,    19,    20,    21,    22,    46,
+      24,    -1,    26,    -1,    -1,    -1,    30,    -1,    32,    33,
+      57,    58,    -1,    -1,    -1,    62,    63,    64,    42,    66,
+      44,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    53,
+      54,    -1,    56,    -1,    81,    82,    83,    84,    85,    86,
+      -1,    65,    -1,    -1,    91,    92,    -1,    -1,    72,    73,
       74,    75,    76,    -1,    -1,    -1,    80,    -1,    -1,    83,
-      84,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    93,
-      11,    12,    13,    14,    -1,    16,    17,    18,    19,    20,
-      21,    22,    -1,    24,    -1,    26,    -1,    -1,    -1,    30,
-      -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    42,    43,    44,    -1,    -1,    47,    -1,    -1,    -1,
-      -1,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    73,    74,    75,    76,    -1,    -1,    -1,    80,
-      -1,    -1,    83,    84,    -1,    -1,    -1,    88,    89,    -1,
-      -1,    -1,    93,    11,    12,    13,    14,    -1,    16,    17,
-      18,    19,    20,    21,    22,    -1,    24,    -1,    26,    -1,
-      -1,    -1,    30,    -1,    32,    33,    34,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    42,    43,    44,    -1,    -1,    47,
-      -1,    -1,    -1,    -1,    -1,    53,    54,    -1,    56,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
-      -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    -1,
-      -1,    -1,    80,    -1,    -1,    83,    84,    -1,    -1,    -1,
-      -1,    89,    -1,    -1,    -1,    93,    11,    12,    13,    14,
-      -1,    16,    17,    18,    19,    20,    21,    22,    46,    24,
-      -1,    26,    -1,    -1,    -1,    30,    -1,    32,    33,    57,
-      58,    -1,    -1,    -1,    62,    63,    64,    42,    66,    44,
-      -1,    69,    70,    71,    -1,    -1,    -1,    -1,    53,    54,
-      -1,    56,    -1,    81,    82,    83,    84,    85,    86,    -1,
-      65,    -1,    -1,    91,    92,    -1,    -1,    72,    73,    74,
-      75,    76,    -1,    -1,    -1,    80,    -1,    -1,    83,    84,
-      11,    12,    13,    14,    89,    16,    -1,    -1,    93,    -1,
-      21,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,
-      31,    -1,    -1,    -1,    -1,    36,    -1,    38,    39,    40,
-      41,    42,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    73,    74,    75,    76,    11,    12,    13,    14,
-      -1,    16,    83,    84,    -1,    -1,    21,    22,    89,    24,
-      -1,    -1,    93,    -1,    -1,    -1,    31,    -1,    -1,    -1,
-      -1,    -1,    -1,    38,    -1,    40,    -1,    42,    -1,    44,
-      -1,    11,    12,    13,    14,    -1,    16,    -1,    -1,    -1,
-      55,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,
-      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
-      75,    76,    42,    -1,    44,    -1,    -1,    -1,    83,    84,
-      -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    -1,
-      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    35,
+      84,    11,    12,    13,    14,    89,    16,    -1,    -1,    93,
+      -1,    21,    22,    -1,    24,    -1,    63,    64,    -1,    66,
+      -1,    31,    69,    -1,    -1,    -1,    36,    -1,    38,    39,
+      40,    41,    42,    -1,    44,    82,    83,    84,    85,    86,
+      -1,    -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
       -1,    -1,    72,    73,    74,    75,    76,    11,    12,    13,
       14,    -1,    16,    83,    84,    -1,    -1,    21,    22,    89,
-      24,    57,    58,    93,    -1,    -1,    62,    63,    64,    -1,
-      66,    67,    68,    69,    70,    71,    -1,    -1,    42,    -1,
-      44,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,
-      86,    -1,    -1,    -1,    -1,    91,    92,    -1,    -1,    -1,
+      24,    -1,    -1,    93,    -1,    -1,    -1,    31,    -1,    -1,
+      -1,    -1,    -1,    -1,    38,    -1,    40,    -1,    42,    -1,
+      44,    -1,    11,    12,    13,    14,    -1,    16,    -1,    -1,
+      -1,    55,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,
       -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
-      74,    75,    76,    -1,    -1,    40,    -1,    -1,    -1,    83,
-      84,    46,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,
-      -1,    -1,    57,    58,    -1,    -1,    -1,    62,    63,    64,
+      74,    75,    76,    42,    -1,    44,    -1,    -1,    -1,    83,
+      84,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,
+      -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
+      -1,    -1,    -1,    72,    73,    74,    75,    76,    11,    12,
+      13,    14,    -1,    16,    83,    84,    -1,    -1,    21,    22,
+      89,    24,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    11,    12,    13,    14,    -1,    16,    42,
+      -1,    44,    -1,    21,    22,    -1,    24,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    63,    64,    -1,    66,    -1,    -1,
+      69,    -1,    65,    -1,    42,    -1,    44,    -1,    -1,    72,
+      73,    74,    75,    76,    83,    84,    85,    86,    -1,    -1,
+      83,    84,    91,    92,    -1,    -1,    89,    65,    -1,    -1,
+      93,    -1,    -1,    -1,    72,    73,    74,    75,    76,    -1,
+      -1,    40,    -1,    -1,    -1,    83,    84,    46,    -1,    -1,
+      -1,    89,    -1,    -1,    -1,    93,    -1,    -1,    57,    58,
+      -1,    -1,    -1,    62,    63,    64,    -1,    66,    -1,    -1,
+      69,    70,    71,    40,    -1,    -1,    -1,    -1,    -1,    46,
+      -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
+      57,    58,    91,    92,    -1,    62,    63,    64,    -1,    66,
+      -1,    -1,    69,    70,    71,    40,    -1,    -1,    -1,    -1,
+      -1,    46,    -1,    -1,    -1,    82,    83,    84,    85,    86,
+      -1,    -1,    57,    58,    91,    92,    -1,    62,    63,    64,
       -1,    66,    -1,    -1,    69,    70,    71,    40,    -1,    -1,
       -1,    -1,    -1,    46,    -1,    -1,    -1,    82,    83,    84,
       85,    86,    -1,    -1,    57,    58,    91,    92,    -1,    62,
       63,    64,    -1,    66,    -1,    -1,    69,    70,    71,    40,
-      -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    -1,    82,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
       83,    84,    85,    86,    -1,    -1,    57,    58,    91,    92,
       -1,    62,    63,    64,    -1,    66,    -1,    -1,    69,    70,
-      71,    40,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,
+      71,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    82,    83,    84,    85,    86,    -1,    -1,    57,    58,
       91,    92,    -1,    62,    63,    64,    -1,    66,    -1,    -1,
       69,    70,    71,    40,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
       57,    58,    91,    92,    -1,    62,    63,    64,    -1,    66,
-      -1,    -1,    69,    70,    71,    40,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,
-      -1,    -1,    57,    58,    91,    92,    -1,    62,    63,    64,
-      -1,    66,    -1,    -1,    69,    70,    71,    40,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,
-      85,    86,    -1,    -1,    57,    58,    91,    92,    -1,    62,
-      63,    64,    -1,    66,    -1,    -1,    69,    70,    71,    40,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      83,    84,    85,    86,    -1,    -1,    57,    58,    91,    92,
-      -1,    62,    63,    64,    -1,    66,    -1,    -1,    69,    70,
-      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,
-      -1,    82,    83,    84,    85,    86,    -1,    57,    58,    -1,
-      91,    92,    62,    63,    64,    -1,    66,    -1,    -1,    69,
-      70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    82,    83,    84,    85,    86,    -1,    57,    58,
-      -1,    91,    92,    62,    63,    64,    -1,    66,    -1,    -1,
-      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    77,    78,
-      -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    57,
-      58,    -1,    91,    92,    62,    63,    64,    -1,    66,    -1,
-      -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    81,    82,    83,    84,    85,    86,    -1,
-      57,    58,    90,    91,    92,    62,    63,    64,    -1,    66,
       -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,
-      -1,    57,    58,    90,    91,    92,    62,    63,    64,    -1,
+      -1,    -1,    48,    -1,    -1,    82,    83,    84,    85,    86,
+      -1,    57,    58,    -1,    91,    92,    62,    63,    64,    -1,
       66,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    81,    82,    83,    84,    85,
+      -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,
       86,    -1,    57,    58,    -1,    91,    92,    62,    63,    64,
       -1,    66,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,
+      -1,    -1,    77,    78,    -1,    -1,    -1,    82,    83,    84,
       85,    86,    -1,    57,    58,    -1,    91,    92,    62,    63,
       64,    -1,    66,    -1,    -1,    69,    70,    71,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
-      -1,    85,    86,    -1,    -1,    89,    -1,    91,    92
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
+      84,    85,    86,    -1,    57,    58,    90,    91,    92,    62,
+      63,    64,    -1,    66,    -1,    -1,    69,    70,    71,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      83,    84,    85,    86,    -1,    57,    58,    90,    91,    92,
+      62,    63,    64,    -1,    66,    -1,    -1,    69,    70,    71,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,
+      82,    83,    84,    85,    86,    -1,    57,    58,    -1,    91,
+      92,    62,    63,    64,    -1,    66,    -1,    -1,    69,    70,
+      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    82,    83,    84,    85,    86,    -1,    -1,    -1,    -1,
+      91,    92
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1209,14 +1220,14 @@ static const yytype_uint8 yystos[] =
       93,    97,    99,   100,   101,   102,   103,   110,   111,   112,
      117,   118,   119,   122,   125,   127,   134,    88,    98,    21,
       42,   100,   118,   118,   118,    89,   118,   135,    21,    89,
-     114,   126,    43,    21,   120,    31,    36,    38,    39,    40,
+     135,   126,    43,    21,   120,    31,    36,    38,    39,    40,
       41,   118,   123,   124,    21,   118,    48,    49,    12,    13,
       21,    21,    21,    21,   118,    55,   123,   124,    21,   121,
      118,   118,   118,   118,   118,   118,    21,    89,   118,   118,
      118,   135,     0,    98,    89,    81,    89,   109,   118,   118,
       57,    58,    62,    63,    64,    66,    69,    70,    71,    82,
-      83,    84,    85,    86,    91,    92,   118,   118,   135,    95,
-     135,   135,   135,   135,    95,   118,   118,    38,   124,   128,
+      83,    84,    85,    86,    91,    92,    89,   118,   118,   135,
+      95,   135,   135,   135,    95,   118,   118,    38,   124,   128,
       35,    67,    68,    21,    46,    81,   118,    46,    81,    45,
      129,    48,   124,    95,    40,    46,    40,    46,    40,    46,
       40,    46,    77,    78,   130,    21,    90,    94,    99,   109,
@@ -2879,9 +2890,9 @@ yyreduce:
 #line 589 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
-		g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str());
+		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
 		inst numpar = 0;
-		WRITE_UINT32(&numpar, (yyvsp[(3) - (3)].narg));
+		WRITE_UINT32(&numpar, (yyvsp[(2) - (2)].narg));
 		g_lingo->code1(numpar); ;}
     break;
 
@@ -2902,7 +2913,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 2906 "engines/director/lingo/lingo-gr.cpp"
+#line 2917 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index a6f7e08..d6fe5cd 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -586,11 +586,11 @@ argstore:	  /* nothing */		{ g_lingo->codeArgStore(); }
 	;
 
 
-macro: ID begin arglist		{
+macro: ID arglist		{
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString($1->c_str());
 		inst numpar = 0;
-		WRITE_UINT32(&numpar, $3);
+		WRITE_UINT32(&numpar, $2);
 		g_lingo->code1(numpar); }
 	;
 


Commit: 6d4bbc15860f41fdef5964e102d4a323164c1c0c
    https://github.com/scummvm/scummvm/commit/6d4bbc15860f41fdef5964e102d4a323164c1c0c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-23T19:39:50+01:00

Commit Message:
DIRECTOR: Lingo: Clarified macro grammar.

Two reduce/reduce conflicts less. 4 to go.

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index e82270e..5b1db0e 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -518,18 +518,18 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  112
+#define YYFINAL  114
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1601
+#define YYLAST   1635
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  96
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  40
+#define YYNNTS  41
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  151
+#define YYNRULES  153
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  331
+#define YYNSTATES  335
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -597,7 +597,7 @@ static const yytype_uint16 yyprhs[] =
      475,   478,   481,   484,   488,   491,   494,   496,   500,   503,
      506,   509,   513,   516,   517,   521,   522,   531,   534,   535,
      544,   545,   546,   557,   558,   560,   564,   569,   570,   573,
-     574,   576
+     574,   576,   580,   582
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -660,7 +660,8 @@ static const yytype_int16 yyrhs[] =
       98,   133,   116,    -1,    -1,    -1,    79,    21,   130,   114,
      131,   132,    98,   133,   116,    25,    -1,    -1,    21,    -1,
      132,    95,    21,    -1,   132,    98,    95,    21,    -1,    -1,
-      21,   135,    -1,    -1,   118,    -1,   135,    95,   118,    -1
+      21,   136,    -1,    -1,   118,    -1,   135,    95,   118,    -1,
+     118,    -1,   135,    95,   118,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -681,7 +682,7 @@ static const yytype_uint16 yyrline[] =
      494,   495,   496,   499,   502,   507,   508,   511,   512,   515,
      516,   519,   522,   525,   525,   555,   555,   561,   564,   564,
      569,   570,   569,   580,   581,   582,   583,   585,   589,   597,
-     598,   599
+     598,   599,   602,   603
 };
 #endif
 
@@ -710,7 +711,7 @@ static const char *const yytname[] =
   "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "expr",
   "func", "globallist", "instancelist", "gotofunc", "gotoframe",
   "gotomovie", "playfunc", "@1", "defn", "@2", "@3", "@4", "@5", "argdef",
-  "argstore", "macro", "arglist", 0
+  "argstore", "macro", "arglist", "nonemptyarglist", 0
 };
 #endif
 
@@ -750,7 +751,7 @@ static const yytype_uint8 yyr1[] =
      122,   122,   122,   122,   122,   123,   123,   124,   124,   125,
      125,   125,   125,   126,   125,   128,   127,   127,   129,   127,
      130,   131,   127,   132,   132,   132,   132,   133,   134,   135,
-     135,   135
+     135,   135,   136,   136
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -771,7 +772,7 @@ static const yytype_uint8 yyr2[] =
        2,     2,     2,     3,     2,     2,     1,     3,     2,     2,
        2,     3,     2,     0,     3,     0,     8,     2,     0,     8,
        0,     0,    10,     0,     1,     3,     4,     0,     2,     0,
-       1,     3
+       1,     3,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -786,135 +787,150 @@ static const yytype_uint8 yydefact[] =
      149,     0,     3,    66,    23,    11,    24,     0,     0,     0,
        0,    21,     8,    99,   100,     7,     9,     5,     4,    63,
        0,    66,    65,   106,   105,   149,   150,   109,   149,   149,
-     148,   149,   101,   115,   103,     0,   119,     0,   120,     0,
-     121,   126,   122,   124,   135,    98,     0,    47,     0,     0,
-       0,     0,   137,   138,   113,   129,   130,   132,   117,   104,
-      79,     0,     0,     0,     0,     0,   140,     0,    84,    85,
-       0,     0,     1,     6,     0,     0,     0,     0,    44,    52,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   149,     0,   150,     0,
-       0,   114,     0,   134,     0,   125,   128,     0,   123,    51,
-       0,     0,     0,    48,     0,     0,     0,     0,     0,    56,
-      51,     0,   131,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    51,     0,    86,    87,     2,     0,
-      52,     0,     0,    51,     0,    28,    75,    76,    74,    77,
-      78,    71,    81,    82,    83,    80,    67,    68,    69,    70,
-      72,    73,   108,   151,    62,   116,   127,   143,    12,    13,
-      14,    19,    16,     0,     0,    18,    15,   143,   112,   118,
-      90,     0,    92,     0,    94,     0,    96,     0,    88,    89,
-     141,   110,   149,    53,     0,    46,    53,     0,    45,   144,
-       0,    20,    17,     0,     0,     0,     0,     0,   143,     0,
-      52,     0,     0,    52,    52,    22,     0,   147,   147,    91,
-      93,    95,    97,     0,   111,    54,    55,     0,     0,    52,
-      51,    32,   145,     0,    53,    53,   147,    25,    52,    53,
-      29,    53,     0,    50,    51,    52,    40,     0,   146,   136,
-     139,    53,    53,    52,    52,    52,    42,    38,     0,     0,
-      39,    35,     0,     0,    52,     0,     0,    37,     0,     0,
-      52,    51,    52,    51,   142,     0,    26,    30,    31,    51,
-      33,     0,    34,     0,    27,    53,    36,    52,    52,    41,
-      43
+     152,     0,   148,   149,   101,   115,   103,     0,   119,     0,
+     120,     0,   121,   126,   122,   124,   135,    98,     0,    47,
+       0,     0,     0,     0,   137,   138,   113,   129,   130,   132,
+     117,   104,    79,     0,     0,     0,     0,     0,   140,     0,
+      84,    85,     0,     0,     1,     6,     0,     0,     0,     0,
+      44,    52,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   149,     0,
+     150,     0,     0,   114,     0,     0,   134,     0,   125,   128,
+       0,   123,    51,     0,     0,     0,    48,     0,     0,     0,
+       0,     0,    56,    51,     0,   131,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    51,     0,    86,
+      87,     2,     0,    52,     0,     0,    51,     0,    28,    75,
+      76,    74,    77,    78,    71,    81,    82,    83,    80,    67,
+      68,    69,    70,    72,    73,   108,   151,    62,   153,   116,
+     127,   143,    12,    13,    14,    19,    16,     0,     0,    18,
+      15,   143,   112,   118,    90,     0,    92,     0,    94,     0,
+      96,     0,    88,    89,   141,   110,   149,    53,     0,    46,
+      53,     0,    45,   144,     0,    20,    17,     0,     0,     0,
+       0,     0,   143,     0,    52,     0,     0,    52,    52,    22,
+       0,   147,   147,    91,    93,    95,    97,     0,   111,    54,
+      55,     0,     0,    52,    51,    32,   145,     0,    53,    53,
+     147,    25,    52,    53,    29,    53,     0,    50,    51,    52,
+      40,     0,   146,   136,   139,    53,    53,    52,    52,    52,
+      42,    38,     0,     0,    39,    35,     0,     0,    52,     0,
+       0,    37,     0,     0,    52,    51,    52,    51,   142,     0,
+      26,    30,    31,    51,    33,     0,    34,     0,    27,    53,
+      36,    52,    52,    41,    43
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    41,   265,    42,    61,    44,   266,    46,   312,   295,
-     296,   286,   297,   117,    47,    48,    49,   287,   207,   185,
-     250,    50,    51,   255,    74,    99,    53,    82,    83,    54,
-      71,    55,   149,   160,   174,   248,   240,   274,    56,   142
+      -1,    41,   269,    42,    61,    44,   270,    46,   316,   299,
+     300,   290,   301,   119,    47,    48,    49,   291,   211,   188,
+     254,    50,    51,   259,    76,   101,    53,    84,    85,    54,
+      73,    55,   152,   163,   177,   252,   244,   278,    56,   144,
+      72
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -240
+#define YYPACT_NINF -241
 static const yytype_int16 yypact[] =
 {
-     326,   -69,  -240,  -240,  1001,  -240,  -240,  1001,  1001,  1067,
-      44,   409,  -240,  -240,  -240,   -20,    46,   900,  -240,    62,
-    1001,    58,    74,    67,    73,    75,  1001,   966,    80,  1001,
-    1001,  1001,  1001,  1001,  1001,    87,   -10,  1001,  1001,  1001,
-    1001,    14,  -240,    16,  -240,  -240,  -240,    29,    33,  1092,
-    1001,  1509,  -240,  -240,  -240,  -240,  -240,  -240,  -240,    30,
-    1001,  -240,  1509,  1509,  1509,  1001,  1509,    45,  1001,  1001,
-      45,  1001,  -240,  -240,    47,  1001,  -240,  1001,  -240,    82,
-    -240,  1509,     9,  -240,  -240,   377,   123,  -240,   -39,  1001,
-     -24,   100,  -240,  -240,  1354,  -240,     9,  -240,  -240,    51,
-     -11,  1131,  1163,  1195,  1227,  1385,  -240,   126,   -11,   -11,
-    1447,    17,  -240,   494,  1092,  1001,  1092,   104,  1478,  1509,
-    1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,
-    1001,  1001,  1001,  1001,  1001,  1001,  1001,   377,  1447,   -35,
-    1001,    45,   -31,    45,   129,  1509,  1509,  1001,  -240,  -240,
-     130,  1001,  1001,  -240,  1001,  1001,   803,  1001,  1001,  -240,
-    -240,  1001,  -240,   133,  1001,  1001,  1001,  1001,  1001,  1001,
-    1001,  1001,  1001,  1001,  -240,     8,  -240,  -240,  -240,    70,
-    1509,    71,  1416,   -69,  1001,  -240,   863,   863,   863,   -11,
-     -11,   -11,  1509,   863,   863,  1061,   173,   173,   -11,   -11,
-    1509,  1509,  -240,  1509,  -240,  -240,  1509,   136,  -240,  1509,
-    1509,  1509,  1509,  1001,  1001,  1509,  1509,   136,  1509,  -240,
-    1509,   140,  1509,  1259,  1509,  1291,  1509,  1323,  1509,  1509,
-    -240,  -240,  1001,  -240,     2,  -240,  -240,   826,  1509,  -240,
-     -43,  1509,  1509,   -43,  1001,  1001,  1001,  1001,   136,    10,
-     660,   117,  1001,   660,  -240,  -240,   143,    81,    81,  1509,
-    1509,  1509,  1509,   -43,  -240,  -240,  -240,   152,  1001,  1509,
-     -14,   -26,  -240,   158,  -240,  -240,    81,  -240,  1509,  -240,
-    -240,  -240,   153,  -240,  -240,   153,  -240,  1092,  -240,   660,
-     660,  -240,  -240,   660,   660,   153,   153,  -240,  1092,   826,
-    -240,   131,   138,   577,   660,   159,   163,  -240,   164,   145,
-    -240,  -240,  -240,  -240,  -240,   166,  -240,  -240,  -240,  -240,
-    -240,   826,  -240,   743,  -240,   743,  -240,  -240,   660,  -240,
-    -240
+     288,   -17,  -241,  -241,   963,  -241,  -241,   963,   963,  1029,
+      35,   371,  -241,  -241,  -241,    21,    54,   862,  -241,    68,
+     963,    58,    74,    76,    81,    87,   963,   928,    88,   963,
+     963,   963,   963,   963,   963,    91,   -10,   963,   963,   963,
+     963,     2,  -241,     3,  -241,  -241,  -241,    24,    33,  1054,
+     963,  1543,  -241,  -241,  -241,  -241,  -241,  -241,  -241,    27,
+     963,  -241,  1543,  1543,  1543,   963,  1543,    25,   963,   963,
+    1347,    47,  -241,   963,  -241,  -241,    50,   963,  -241,   963,
+    -241,    83,  -241,  1543,    65,  -241,  -241,   143,   126,  -241,
+     -32,   963,   -24,   103,  -241,  -241,  1316,  -241,    65,  -241,
+    -241,    55,   -33,   340,  1093,  1125,  1157,  1419,  -241,   131,
+     -33,   -33,  1481,   -70,  -241,   456,  1054,   963,  1054,   108,
+    1512,  1543,   963,   963,   963,   963,   963,   963,   963,   963,
+     963,   963,   963,   963,   963,   963,   963,   963,   963,   143,
+    1481,   -23,   963,    25,    -7,   963,    25,   136,  1543,  1543,
+     963,  -241,  -241,   139,   963,   963,  -241,   963,   963,   765,
+     963,   963,  -241,  -241,   963,  -241,   142,   963,   963,   963,
+     963,   963,   963,   963,   963,   963,   963,  -241,     6,  -241,
+    -241,  -241,    77,  1543,    90,  1450,   -17,   963,  -241,   825,
+     825,   825,   -33,   -33,   -33,  1543,   825,   825,  1023,   130,
+     130,   -33,   -33,  1543,  1543,  -241,  1543,  -241,  1383,  -241,
+    1543,   145,  -241,  1543,  1543,  1543,  1543,   963,   963,  1543,
+    1543,   145,  1543,  -241,  1543,  1189,  1543,  1221,  1543,  1253,
+    1543,  1285,  1543,  1543,  -241,  -241,   963,  -241,    -4,  -241,
+    -241,   788,  1543,  -241,   -11,  1543,  1543,   -11,   963,   963,
+     963,   963,   145,     9,   622,   118,   963,   622,  -241,  -241,
+     161,    89,    89,  1543,  1543,  1543,  1543,   -11,  -241,  -241,
+    -241,   160,   963,  1543,    -5,   -13,  -241,   165,  -241,  -241,
+      89,  -241,  1543,  -241,  -241,  -241,   158,  -241,  -241,   158,
+    -241,  1054,  -241,   622,   622,  -241,  -241,   622,   622,   158,
+     158,  -241,  1054,   788,  -241,   141,   147,   539,   622,   170,
+     172,  -241,   177,   159,  -241,  -241,  -241,  -241,  -241,   178,
+    -241,  -241,  -241,  -241,  -241,   788,  -241,   705,  -241,   705,
+    -241,  -241,   622,  -241,  -241
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -240,  -240,    12,    83,    25,  -236,     0,  -240,  -240,  -240,
-     -78,  -212,  -101,  -112,  -240,  -240,  -240,  -239,   -92,     7,
-    -182,  -240,     1,    26,  -240,  -240,  -240,   172,    -7,  -240,
-    -240,  -240,  -240,  -240,  -240,  -240,  -211,  -214,  -240,     6
+    -241,  -241,    12,    93,     7,  -240,     0,  -241,  -241,  -241,
+     -58,  -235,   -69,  -112,  -241,  -241,  -241,  -239,  -134,   -34,
+    -185,  -241,     1,    26,  -241,  -241,  -241,   204,   -16,  -241,
+    -241,  -241,  -241,  -241,  -241,  -241,  -206,  -218,  -241,     8,
+    -241
 };
 
 /* 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 -150
+#define YYTABLE_NINF -152
 static const yytype_int16 yytable[] =
 {
-      45,   254,   179,   283,   181,    62,   243,   154,    63,    64,
-      66,   280,    66,    58,   112,    67,   -10,    70,    81,    57,
-      97,    85,   157,    72,   284,    43,    52,    94,    81,   251,
-     100,   101,   102,   103,   104,   105,   281,   263,   108,   109,
-     110,    66,   155,   298,   275,    57,   111,    77,   252,    79,
-     118,   119,   256,   113,   253,   202,   298,   158,   126,   204,
-     140,   137,   291,   310,   140,    68,   138,    73,   217,    66,
-     138,   139,    66,   300,   141,   148,   145,   143,   146,   107,
-     134,   135,   230,    84,   300,   326,    88,    89,    91,   162,
-     156,   237,   289,   290,    92,    90,    93,   293,   231,   294,
-     264,    98,    57,   232,   -10,   140,    86,    87,   106,   303,
-     304,   177,   140,    45,   115,   118,   180,   182,   114,   136,
-     147,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,    66,    43,    52,
-     140,   203,   144,   328,   153,   159,   163,   175,   206,   183,
-     205,   208,   209,   210,   219,   211,   212,   239,   215,   216,
-     233,   235,   218,   268,   272,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   302,   273,   277,   282,   288,
-     244,   311,   283,   313,   316,   238,   309,   234,   317,   318,
-     319,   324,   299,   285,   307,   236,   178,   120,   121,    96,
-       0,     0,   122,   123,   124,     0,   125,     0,     0,   126,
-     127,   128,     0,     0,   241,   242,     0,     0,     0,   321,
-       0,   323,   129,   130,   131,   132,   133,   325,     0,     0,
-       0,   134,   135,    66,     0,     0,   123,   124,   249,   125,
-       0,     0,   126,     0,     0,   259,   260,   261,   262,     0,
-       0,     0,   257,   269,     0,   258,     0,   267,   132,   133,
-     270,   271,     0,     0,   134,   135,     0,     0,     0,   278,
-       0,     0,     0,     0,     0,   276,   279,     0,     0,     0,
-       0,     0,     0,     0,     0,   292,     0,     0,   118,     0,
-       0,     0,   301,     0,     0,     0,     0,     0,     0,   118,
-     305,   306,   308,     0,     0,     0,     0,     0,     0,     0,
-       0,   315,     0,     0,     0,     0,     0,   320,     0,   322,
-       0,     0,     0,   327,     0,   327,    -6,     1,     0,     0,
-       0,     0,     0,     0,   329,   330,     0,     2,     3,     4,
+      45,   258,   114,   -10,   182,    62,   184,    43,    63,    64,
+      66,    99,    70,    58,   157,   247,   287,    67,    83,    71,
+     284,    87,   160,   255,   180,   142,    52,    96,    83,   221,
+     102,   103,   104,   105,   106,   107,   128,   288,   110,   111,
+     112,    66,   256,   234,   279,   285,   267,   302,   113,   158,
+     120,   121,   241,   115,   304,   257,    68,   161,   136,   137,
+     302,   139,   295,   314,    74,   304,   140,   205,   151,    66,
+     140,    57,   142,   141,    66,    75,   143,    57,   148,   109,
+     149,   146,   165,   207,   260,   330,    90,    91,   142,    86,
+      57,   -10,   159,   293,   294,    92,   235,    93,   297,   268,
+     298,   236,    94,    79,   142,    81,    88,    89,    95,   100,
+     307,   308,   108,   116,   117,    45,   138,   120,   183,   185,
+     142,   150,    43,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,    66,
+     286,    52,   145,   206,   332,   147,   208,   156,   162,   238,
+     166,   210,   178,   186,   303,   213,   214,   209,   215,   216,
+     212,   219,   220,   223,   272,   222,   243,   237,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   153,   306,
+     239,   325,   276,   327,   277,   281,   292,   287,   242,   329,
+     313,   315,   317,   125,   126,   320,   127,   321,   240,   128,
+     122,   123,   322,   328,   323,   124,   125,   126,   181,   127,
+     154,   155,   128,   129,   130,   134,   135,   289,   245,   246,
+     271,   136,   137,   274,   275,   131,   132,   133,   134,   135,
+     311,    98,     0,     0,   136,   137,     0,    66,     0,   283,
+       0,     0,     0,     0,   253,     0,     0,     0,   296,   263,
+     264,   265,   266,     0,     0,   305,   261,   273,     0,   262,
+       0,     0,     0,   309,   310,   312,     0,     0,     0,     0,
+       0,     0,     0,   282,   319,     0,     0,     0,     0,   280,
+     324,     0,   326,     0,     0,     0,     0,     0,    -6,     1,
+       0,     0,   120,     0,     0,     0,     0,   333,   334,     2,
+       3,     4,     5,   120,     6,     7,     8,     9,    10,    11,
+      12,     0,    13,     0,    14,     0,     0,     0,    15,     0,
+      16,    17,    18,     0,     0,    19,     0,   331,     0,   331,
+      20,    21,    22,     0,     0,    23,     0,     0,     0,    24,
+      25,    26,    27,     0,    28,     0,     0,     0,     0,     0,
+       0,     0,     0,    29,     0,     0,     0,     0,     0,     0,
+      30,    31,    32,    33,    34,     0,     0,    35,    36,     0,
+       0,    37,    38,     0,     0,     0,    -6,    39,     0,     0,
+     167,    40,     2,     3,     4,     5,   168,     6,     0,     0,
+       0,     0,    59,    12,     0,    13,     0,   122,   123,     0,
+       0,     0,   124,   125,   126,     0,   127,     0,     0,   128,
+     129,   130,     0,    60,     0,    22,     0,     0,     0,     0,
+       0,     0,   131,   132,   133,   134,   135,     0,     0,     0,
+       0,   136,   137,     0,     0,     0,    29,     0,     0,     0,
+       0,     0,     0,    30,    31,    32,    33,    34,     0,     0,
+       0,     0,     0,     0,    37,    38,     0,     0,     0,     0,
+      69,     0,     0,     0,    40,     0,  -149,     2,     3,     4,
        5,     0,     6,     7,     8,     9,    10,    11,    12,     0,
       13,     0,    14,     0,     0,     0,    15,     0,    16,    17,
       18,     0,     0,    19,     0,     0,     0,     0,    20,    21,
@@ -922,164 +938,167 @@ static const yytype_int16 yytable[] =
       27,     0,    28,     0,     0,     0,     0,     0,     0,     0,
        0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
       32,    33,    34,     0,     0,    35,    36,     0,     0,    37,
-      38,     0,   150,     0,    -6,    39,     0,     0,     0,    40,
-       2,     3,     4,     5,     0,     6,     0,     0,     0,     0,
-      59,    12,     0,    13,   120,   121,     0,     0,     0,   122,
-     123,   124,     0,   125,   151,   152,   126,   127,   128,     0,
-       0,    60,     0,    22,     0,     0,     0,     0,     0,   129,
-     130,   131,   132,   133,     0,     0,     0,     0,   134,   135,
+      38,     0,     0,     0,     0,    39,     0,     0,     0,    40,
+       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
+      59,    12,     0,    13,   318,    14,     0,     0,     0,    15,
+       0,    16,    17,    18,     0,     0,     0,     0,     0,     0,
+       0,    20,    21,    22,     0,     0,    23,     0,     0,     0,
+       0,     0,    26,    27,     0,    28,     0,     0,     0,     0,
        0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
-       0,    30,    31,    32,    33,    34,     0,     0,     0,     0,
-       0,     0,    37,    38,     0,     0,     0,     0,    69,     0,
-       0,     0,    40,     0,  -149,     2,     3,     4,     5,     0,
-       6,     7,     8,     9,    10,    11,    12,     0,    13,     0,
-      14,     0,     0,     0,    15,     0,    16,    17,    18,     0,
-       0,    19,     0,     0,     0,     0,    20,    21,    22,     0,
-       0,    23,     0,     0,     0,    24,    25,    26,    27,     0,
-      28,     0,     0,     0,     0,     0,     0,     0,     0,    29,
-       0,     0,     0,     0,     0,     0,    30,    31,    32,    33,
-      34,     0,     0,    35,    36,     0,     0,    37,    38,     0,
-       0,     0,     0,    39,     0,     0,     0,    40,     2,     3,
-       4,     5,     0,     6,     7,     8,     9,    10,    59,    12,
-       0,    13,   314,    14,     0,     0,     0,    15,     0,    16,
-      17,    18,     0,     0,     0,     0,     0,     0,     0,    20,
-      21,    22,     0,     0,    23,     0,     0,     0,     0,     0,
-      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
-       0,     0,    29,     0,     0,     0,     0,     0,     0,    30,
-      31,    32,    33,    34,     0,     0,     0,    36,     0,     0,
-      37,    38,     0,     0,     0,    57,    39,     0,     0,     0,
-      40,     2,     3,     4,     5,     0,     6,     7,     8,     9,
-      10,    59,    12,     0,    13,     0,    14,     0,     0,     0,
-      15,     0,    16,    17,    18,     0,     0,     0,     0,     0,
-       0,     0,    20,    21,    22,     0,     0,    23,     0,     0,
-       0,     0,     0,    26,    27,     0,    28,     0,     0,     0,
-       0,     0,     0,     0,     0,    29,     0,     0,     0,     0,
-       0,     0,    30,    31,    32,    33,    34,     0,     0,     0,
-      36,     0,     0,    37,    38,     0,     0,     0,    57,    39,
-       0,     0,     0,    40,     2,     3,     4,     5,     0,     6,
-       7,     8,     9,    10,    59,    12,     0,    13,     0,    14,
-       0,     0,     0,    15,     0,    16,    17,    18,     0,     0,
-       0,     0,     0,     0,     0,    20,    21,    22,     0,     0,
-      23,     0,     0,     0,     0,     0,    26,    27,     0,    28,
-       0,     0,     0,     0,     0,     0,     0,     0,    29,     0,
+       0,    30,    31,    32,    33,    34,     0,     0,     0,    36,
+       0,     0,    37,    38,     0,     0,     0,    57,    39,     0,
+       0,     0,    40,     2,     3,     4,     5,     0,     6,     7,
+       8,     9,    10,    59,    12,     0,    13,     0,    14,     0,
+       0,     0,    15,     0,    16,    17,    18,     0,     0,     0,
+       0,     0,     0,     0,    20,    21,    22,     0,     0,    23,
+       0,     0,     0,     0,     0,    26,    27,     0,    28,     0,
+       0,     0,     0,     0,     0,     0,     0,    29,     0,     0,
+       0,     0,     0,     0,    30,    31,    32,    33,    34,     0,
+       0,     0,    36,     0,     0,    37,    38,     0,     0,     0,
+      57,    39,     0,     0,     0,    40,     2,     3,     4,     5,
+       0,     6,     7,     8,     9,    10,    59,    12,     0,    13,
+       0,    14,     0,     0,     0,    15,     0,    16,    17,    18,
+       0,     0,     0,     0,     0,     0,     0,    20,    21,    22,
+       0,     0,    23,     0,     0,     0,     0,     0,    26,    27,
+       0,    28,     0,     0,     0,     0,     0,     0,     0,     0,
+      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
+      33,    34,     0,     0,     0,    36,     0,     0,    37,    38,
+       0,     0,     0,     0,    39,     0,     0,     0,    40,     2,
+       3,     4,     5,     0,     6,     7,     8,     9,    10,    59,
+      12,   217,    13,     0,    14,     0,     0,     0,    15,     0,
+      16,    17,   122,   123,     0,     0,     0,   124,   125,   126,
+      20,   127,    22,     0,   128,   129,   130,     0,     0,     0,
+       0,    26,    27,     0,    28,     0,   218,   131,   132,   133,
+     134,   135,     0,    29,     0,     0,   136,   137,     0,     0,
+      30,    31,    32,    33,    34,     0,     0,     0,    36,     0,
+       0,    37,    38,     2,     3,     4,     5,    39,     6,     0,
+       0,    40,     0,    59,    12,     0,    13,     0,   125,   126,
+       0,   127,     0,    77,   128,     0,     0,     0,    78,     0,
+      79,    80,    81,    82,    60,     0,    22,   131,   132,   133,
+     134,   135,     0,     0,     0,     0,   136,   137,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    29,     0,     0,
+       0,     0,     0,     0,    30,    31,    32,    33,    34,     2,
+       3,     4,     5,     0,     6,    37,    38,     0,     0,    59,
+      12,    39,    13,     0,     0,    40,     0,     0,     0,    77,
+       0,     0,     0,     0,     0,     0,    79,     0,    81,     0,
+      60,     0,    22,     0,     2,     3,     4,     5,     0,     6,
+       0,     0,     0,    97,    59,    12,     0,    13,     0,     0,
+       0,     0,     0,    29,     0,     0,     0,     0,     0,     0,
+      30,    31,    32,    33,    34,    60,     0,    22,     0,     0,
+       0,    37,    38,     0,     0,     0,     0,    39,     0,     0,
+       0,    40,     0,     0,     0,     0,     0,     0,    29,     0,
        0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
-       0,     0,     0,    36,     0,     0,    37,    38,     0,     0,
-       0,     0,    39,     0,     0,     0,    40,     2,     3,     4,
-       5,     0,     6,     7,     8,     9,    10,    59,    12,   213,
-      13,     0,    14,     0,     0,     0,    15,     0,    16,    17,
-     120,   121,     0,     0,     0,   122,   123,   124,    20,   125,
-      22,     0,   126,   127,   128,     0,     0,     0,     0,    26,
-      27,     0,    28,     0,   214,   129,   130,   131,   132,   133,
-       0,    29,     0,     0,   134,   135,     0,     0,    30,    31,
-      32,    33,    34,     0,     0,     0,    36,     0,     0,    37,
-      38,     2,     3,     4,     5,    39,     6,     0,     0,    40,
-       0,    59,    12,     0,    13,     0,   123,   124,     0,   125,
-       0,    75,   126,     0,     0,     0,    76,     0,    77,    78,
-      79,    80,    60,     0,    22,   129,   130,   131,   132,   133,
-       0,     0,     0,     0,   134,   135,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    29,     0,     0,     0,     0,
-       0,     0,    30,    31,    32,    33,    34,     2,     3,     4,
-       5,     0,     6,    37,    38,     0,     0,    59,    12,    39,
-      13,     0,     0,    40,     0,     0,     0,    75,     0,     0,
-       0,     0,     0,     0,    77,     0,    79,     0,    60,     0,
-      22,     0,     2,     3,     4,     5,     0,     6,     0,     0,
-       0,    95,    59,    12,     0,    13,     0,     0,     0,     0,
-       0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
-      32,    33,    34,    60,     0,    22,     0,     0,     0,    37,
-      38,     0,     0,     0,     0,    39,     0,     0,     0,    40,
-       0,     0,     0,     0,     0,     0,    29,     0,     0,     0,
-       0,     0,     0,    30,    31,    32,    33,    34,     2,     3,
-       4,     5,     0,     6,    37,    38,     0,     0,    59,    12,
-      39,    13,     0,     0,    40,     0,     0,     0,     0,     0,
-       0,     0,     0,     2,     3,     4,     5,     0,     6,    60,
-       0,    22,     0,    59,    12,     0,    13,     0,     0,     0,
-       0,     0,     0,     0,   123,   124,     0,   125,     0,     0,
-     126,     0,    29,     0,    60,     0,    22,     0,     0,    30,
-      31,    32,    33,    34,   130,   131,   132,   133,     0,     0,
-      37,    38,   134,   135,     0,     0,    65,    29,     0,     0,
-      40,     0,     0,     0,    30,    31,    32,    33,    34,     0,
-       0,   164,     0,     0,     0,    37,    38,   165,     0,     0,
-       0,   116,     0,     0,     0,    40,     0,     0,   120,   121,
-       0,     0,     0,   122,   123,   124,     0,   125,     0,     0,
-     126,   127,   128,   166,     0,     0,     0,     0,     0,   167,
-       0,     0,     0,   129,   130,   131,   132,   133,     0,     0,
-     120,   121,   134,   135,     0,   122,   123,   124,     0,   125,
-       0,     0,   126,   127,   128,   168,     0,     0,     0,     0,
-       0,   169,     0,     0,     0,   129,   130,   131,   132,   133,
-       0,     0,   120,   121,   134,   135,     0,   122,   123,   124,
-       0,   125,     0,     0,   126,   127,   128,   170,     0,     0,
-       0,     0,     0,   171,     0,     0,     0,   129,   130,   131,
-     132,   133,     0,     0,   120,   121,   134,   135,     0,   122,
-     123,   124,     0,   125,     0,     0,   126,   127,   128,   245,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   129,
-     130,   131,   132,   133,     0,     0,   120,   121,   134,   135,
-       0,   122,   123,   124,     0,   125,     0,     0,   126,   127,
-     128,   246,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   129,   130,   131,   132,   133,     0,     0,   120,   121,
-     134,   135,     0,   122,   123,   124,     0,   125,     0,     0,
-     126,   127,   128,   247,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   129,   130,   131,   132,   133,     0,     0,
-     120,   121,   134,   135,     0,   122,   123,   124,     0,   125,
-       0,     0,   126,   127,   128,     0,     0,     0,     0,     0,
-       0,     0,   161,     0,     0,   129,   130,   131,   132,   133,
-       0,   120,   121,     0,   134,   135,   122,   123,   124,     0,
-     125,     0,     0,   126,   127,   128,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   129,   130,   131,   132,
-     133,     0,   120,   121,     0,   134,   135,   122,   123,   124,
-       0,   125,     0,     0,   126,   127,   128,     0,     0,     0,
-       0,     0,   172,   173,     0,     0,     0,   129,   130,   131,
-     132,   133,     0,   120,   121,     0,   134,   135,   122,   123,
-     124,     0,   125,     0,     0,   126,   127,   128,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   184,   129,   130,
-     131,   132,   133,     0,   120,   121,   176,   134,   135,   122,
-     123,   124,     0,   125,     0,     0,   126,   127,   128,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   129,
-     130,   131,   132,   133,     0,   120,   121,   176,   134,   135,
-     122,   123,   124,     0,   125,     0,     0,   126,   127,   128,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   184,
-     129,   130,   131,   132,   133,     0,   120,   121,     0,   134,
-     135,   122,   123,   124,     0,   125,     0,     0,   126,   127,
-     128,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   129,   130,   131,   132,   133,     0,     0,     0,     0,
-     134,   135
+       2,     3,     4,     5,     0,     6,    37,    38,     0,     0,
+      59,    12,    39,    13,     0,     0,    40,     0,     0,     0,
+       0,     0,     0,     0,     0,     2,     3,     4,     5,     0,
+       6,    60,     0,    22,     0,    59,    12,     0,    13,     0,
+       0,     0,     0,     0,     0,     0,   125,   126,     0,   127,
+       0,     0,   128,     0,    29,     0,    60,     0,    22,     0,
+       0,    30,    31,    32,    33,    34,   132,   133,   134,   135,
+       0,     0,    37,    38,   136,   137,     0,     0,    65,    29,
+       0,     0,    40,     0,     0,     0,    30,    31,    32,    33,
+      34,     0,     0,   169,     0,     0,     0,    37,    38,   170,
+       0,     0,     0,   118,     0,     0,     0,    40,     0,     0,
+     122,   123,     0,     0,     0,   124,   125,   126,     0,   127,
+       0,     0,   128,   129,   130,   171,     0,     0,     0,     0,
+       0,   172,     0,     0,     0,   131,   132,   133,   134,   135,
+       0,     0,   122,   123,   136,   137,     0,   124,   125,   126,
+       0,   127,     0,     0,   128,   129,   130,   173,     0,     0,
+       0,     0,     0,   174,     0,     0,     0,   131,   132,   133,
+     134,   135,     0,     0,   122,   123,   136,   137,     0,   124,
+     125,   126,     0,   127,     0,     0,   128,   129,   130,   248,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   131,
+     132,   133,   134,   135,     0,     0,   122,   123,   136,   137,
+       0,   124,   125,   126,     0,   127,     0,     0,   128,   129,
+     130,   249,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   131,   132,   133,   134,   135,     0,     0,   122,   123,
+     136,   137,     0,   124,   125,   126,     0,   127,     0,     0,
+     128,   129,   130,   250,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   131,   132,   133,   134,   135,     0,     0,
+     122,   123,   136,   137,     0,   124,   125,   126,     0,   127,
+       0,     0,   128,   129,   130,   251,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   131,   132,   133,   134,   135,
+       0,     0,   122,   123,   136,   137,     0,   124,   125,   126,
+       0,   127,     0,     0,   128,   129,   130,     0,     0,     0,
+       0,     0,     0,     0,   164,     0,     0,   131,   132,   133,
+     134,   135,     0,   122,   123,     0,   136,   137,   124,   125,
+     126,     0,   127,     0,     0,   128,   129,   130,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   131,   132,
+     133,   134,   135,     0,   122,   123,     0,   136,   137,   124,
+     125,   126,     0,   127,     0,     0,   128,   129,   130,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   131,
+     132,   133,   134,   135,     0,     0,     0,     0,   136,   137,
+     122,   123,  -150,     0,     0,   124,   125,   126,     0,   127,
+       0,     0,   128,   129,   130,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   131,   132,   133,   134,   135,
+       0,     0,     0,     0,   136,   137,   122,   123,  -151,     0,
+       0,   124,   125,   126,     0,   127,     0,     0,   128,   129,
+     130,     0,     0,     0,     0,     0,   175,   176,     0,     0,
+       0,   131,   132,   133,   134,   135,     0,   122,   123,     0,
+     136,   137,   124,   125,   126,     0,   127,     0,     0,   128,
+     129,   130,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   187,   131,   132,   133,   134,   135,     0,   122,   123,
+     179,   136,   137,   124,   125,   126,     0,   127,     0,     0,
+     128,   129,   130,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   131,   132,   133,   134,   135,     0,   122,
+     123,   179,   136,   137,   124,   125,   126,     0,   127,     0,
+       0,   128,   129,   130,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   187,   131,   132,   133,   134,   135,     0,
+     122,   123,     0,   136,   137,   124,   125,   126,     0,   127,
+       0,     0,   128,   129,   130,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   131,   132,   133,   134,   135,
+       0,     0,     0,     0,   136,   137
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,   237,   114,    29,   116,     4,   217,    46,     7,     8,
-       9,    25,    11,     1,     0,     9,     0,    11,    17,    88,
-      27,    20,    46,    43,    50,     0,     0,    26,    27,    27,
-      29,    30,    31,    32,    33,    34,    50,   248,    37,    38,
-      39,    40,    81,   282,   258,    88,    40,    38,    46,    40,
-      49,    50,    95,    41,   236,    90,   295,    81,    69,    90,
-      95,    60,   276,   299,    95,    21,    65,    21,   160,    68,
-      69,    65,    71,   285,    68,    82,    75,    71,    77,    89,
-      91,    92,   174,    21,   296,   321,    12,    13,    21,    96,
-      89,   183,   274,   275,    21,    21,    21,   279,    90,   281,
-      90,    21,    88,    95,    88,    95,    48,    49,    21,   291,
-     292,    94,    95,   113,    81,   114,   115,   116,    89,    89,
-      38,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   113,   113,
-      95,   140,    95,   325,    21,    45,    95,    21,   147,    45,
-      21,    21,   151,   152,    21,   154,   155,    21,   157,   158,
-      90,    90,   161,    46,    21,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   287,    95,    25,   270,    21,
-      40,    50,    29,    45,    25,   184,   298,   180,    25,    25,
-      45,    25,   284,   271,   295,   183,   113,    57,    58,    27,
+       0,   241,     0,     0,   116,     4,   118,     0,     7,     8,
+       9,    27,    11,     1,    46,   221,    29,     9,    17,    11,
+      25,    20,    46,    27,    94,    95,     0,    26,    27,   163,
+      29,    30,    31,    32,    33,    34,    69,    50,    37,    38,
+      39,    40,    46,   177,   262,    50,   252,   286,    40,    81,
+      49,    50,   186,    41,   289,   240,    21,    81,    91,    92,
+     299,    60,   280,   303,    43,   300,    65,    90,    84,    68,
+      69,    88,    95,    65,    73,    21,    68,    88,    77,    89,
+      79,    73,    98,    90,    95,   325,    12,    13,    95,    21,
+      88,    88,    91,   278,   279,    21,    90,    21,   283,    90,
+     285,    95,    21,    38,    95,    40,    48,    49,    21,    21,
+     295,   296,    21,    89,    81,   115,    89,   116,   117,   118,
+      95,    38,   115,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     274,   115,    95,   142,   329,    95,   145,    21,    45,   183,
+      95,   150,    21,    45,   288,   154,   155,    21,   157,   158,
+      21,   160,   161,    21,    46,   164,    21,    90,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   176,    35,   291,
+      90,   315,    21,   317,    95,    25,    21,    29,   187,   323,
+     302,    50,    45,    63,    64,    25,    66,    25,   186,    69,
+      57,    58,    25,    25,    45,    62,    63,    64,   115,    66,
+      67,    68,    69,    70,    71,    85,    86,   275,   217,   218,
+     254,    91,    92,   257,   258,    82,    83,    84,    85,    86,
+     299,    27,    -1,    -1,    91,    92,    -1,   236,    -1,   273,
+      -1,    -1,    -1,    -1,   236,    -1,    -1,    -1,   282,   248,
+     249,   250,   251,    -1,    -1,   289,   244,   256,    -1,   247,
+      -1,    -1,    -1,   297,   298,   299,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   272,   308,    -1,    -1,    -1,    -1,   267,
+     314,    -1,   316,    -1,    -1,    -1,    -1,    -1,     0,     1,
+      -1,    -1,   291,    -1,    -1,    -1,    -1,   331,   332,    11,
+      12,    13,    14,   302,    16,    17,    18,    19,    20,    21,
+      22,    -1,    24,    -1,    26,    -1,    -1,    -1,    30,    -1,
+      32,    33,    34,    -1,    -1,    37,    -1,   327,    -1,   329,
+      42,    43,    44,    -1,    -1,    47,    -1,    -1,    -1,    51,
+      52,    53,    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
+      72,    73,    74,    75,    76,    -1,    -1,    79,    80,    -1,
+      -1,    83,    84,    -1,    -1,    -1,    88,    89,    -1,    -1,
+      40,    93,    11,    12,    13,    14,    46,    16,    -1,    -1,
+      -1,    -1,    21,    22,    -1,    24,    -1,    57,    58,    -1,
       -1,    -1,    62,    63,    64,    -1,    66,    -1,    -1,    69,
-      70,    71,    -1,    -1,   213,   214,    -1,    -1,    -1,   311,
-      -1,   313,    82,    83,    84,    85,    86,   319,    -1,    -1,
-      -1,    91,    92,   232,    -1,    -1,    63,    64,   232,    66,
-      -1,    -1,    69,    -1,    -1,   244,   245,   246,   247,    -1,
-      -1,    -1,   240,   252,    -1,   243,    -1,   250,    85,    86,
-     253,   254,    -1,    -1,    91,    92,    -1,    -1,    -1,   268,
-      -1,    -1,    -1,    -1,    -1,   263,   269,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   278,    -1,    -1,   287,    -1,
-      -1,    -1,   285,    -1,    -1,    -1,    -1,    -1,    -1,   298,
-     293,   294,   295,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   304,    -1,    -1,    -1,    -1,    -1,   310,    -1,   312,
-      -1,    -1,    -1,   323,    -1,   325,     0,     1,    -1,    -1,
-      -1,    -1,    -1,    -1,   327,   328,    -1,    11,    12,    13,
+      70,    71,    -1,    42,    -1,    44,    -1,    -1,    -1,    -1,
+      -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,    -1,
+      -1,    91,    92,    -1,    -1,    -1,    65,    -1,    -1,    -1,
+      -1,    -1,    -1,    72,    73,    74,    75,    76,    -1,    -1,
+      -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
+      89,    -1,    -1,    -1,    93,    -1,    95,    11,    12,    13,
       14,    -1,    16,    17,    18,    19,    20,    21,    22,    -1,
       24,    -1,    26,    -1,    -1,    -1,    30,    -1,    32,    33,
       34,    -1,    -1,    37,    -1,    -1,    -1,    -1,    42,    43,
@@ -1087,88 +1106,68 @@ static const yytype_int16 yycheck[] =
       54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
       74,    75,    76,    -1,    -1,    79,    80,    -1,    -1,    83,
-      84,    -1,    35,    -1,    88,    89,    -1,    -1,    -1,    93,
-      11,    12,    13,    14,    -1,    16,    -1,    -1,    -1,    -1,
-      21,    22,    -1,    24,    57,    58,    -1,    -1,    -1,    62,
-      63,    64,    -1,    66,    67,    68,    69,    70,    71,    -1,
-      -1,    42,    -1,    44,    -1,    -1,    -1,    -1,    -1,    82,
-      83,    84,    85,    86,    -1,    -1,    -1,    -1,    91,    92,
+      84,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,
+      11,    12,    13,    14,    -1,    16,    17,    18,    19,    20,
+      21,    22,    -1,    24,    25,    26,    -1,    -1,    -1,    30,
+      -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    42,    43,    44,    -1,    -1,    47,    -1,    -1,    -1,
+      -1,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    73,    74,    75,    76,    -1,    -1,    -1,    -1,
-      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    89,    -1,
-      -1,    -1,    93,    -1,    95,    11,    12,    13,    14,    -1,
-      16,    17,    18,    19,    20,    21,    22,    -1,    24,    -1,
-      26,    -1,    -1,    -1,    30,    -1,    32,    33,    34,    -1,
-      -1,    37,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,
-      -1,    47,    -1,    -1,    -1,    51,    52,    53,    54,    -1,
-      56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
-      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,
-      76,    -1,    -1,    79,    80,    -1,    -1,    83,    84,    -1,
-      -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    11,    12,
-      13,    14,    -1,    16,    17,    18,    19,    20,    21,    22,
-      -1,    24,    25,    26,    -1,    -1,    -1,    30,    -1,    32,
-      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
-      43,    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,
-      53,    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-      73,    74,    75,    76,    -1,    -1,    -1,    80,    -1,    -1,
-      83,    84,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,
-      93,    11,    12,    13,    14,    -1,    16,    17,    18,    19,
-      20,    21,    22,    -1,    24,    -1,    26,    -1,    -1,    -1,
-      30,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    42,    43,    44,    -1,    -1,    47,    -1,    -1,
-      -1,    -1,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
-      -1,    -1,    72,    73,    74,    75,    76,    -1,    -1,    -1,
-      80,    -1,    -1,    83,    84,    -1,    -1,    -1,    88,    89,
-      -1,    -1,    -1,    93,    11,    12,    13,    14,    -1,    16,
-      17,    18,    19,    20,    21,    22,    -1,    24,    -1,    26,
-      -1,    -1,    -1,    30,    -1,    32,    33,    34,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,    -1,
-      47,    -1,    -1,    -1,    -1,    -1,    53,    54,    -1,    56,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
+      -1,    72,    73,    74,    75,    76,    -1,    -1,    -1,    80,
+      -1,    -1,    83,    84,    -1,    -1,    -1,    88,    89,    -1,
+      -1,    -1,    93,    11,    12,    13,    14,    -1,    16,    17,
+      18,    19,    20,    21,    22,    -1,    24,    -1,    26,    -1,
+      -1,    -1,    30,    -1,    32,    33,    34,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    42,    43,    44,    -1,    -1,    47,
+      -1,    -1,    -1,    -1,    -1,    53,    54,    -1,    56,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
+      -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    -1,
+      -1,    -1,    80,    -1,    -1,    83,    84,    -1,    -1,    -1,
+      88,    89,    -1,    -1,    -1,    93,    11,    12,    13,    14,
+      -1,    16,    17,    18,    19,    20,    21,    22,    -1,    24,
+      -1,    26,    -1,    -1,    -1,    30,    -1,    32,    33,    34,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    44,
+      -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    53,    54,
+      -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
+      75,    76,    -1,    -1,    -1,    80,    -1,    -1,    83,    84,
+      -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    11,
+      12,    13,    14,    -1,    16,    17,    18,    19,    20,    21,
+      22,    46,    24,    -1,    26,    -1,    -1,    -1,    30,    -1,
+      32,    33,    57,    58,    -1,    -1,    -1,    62,    63,    64,
+      42,    66,    44,    -1,    69,    70,    71,    -1,    -1,    -1,
+      -1,    53,    54,    -1,    56,    -1,    81,    82,    83,    84,
+      85,    86,    -1,    65,    -1,    -1,    91,    92,    -1,    -1,
+      72,    73,    74,    75,    76,    -1,    -1,    -1,    80,    -1,
+      -1,    83,    84,    11,    12,    13,    14,    89,    16,    -1,
+      -1,    93,    -1,    21,    22,    -1,    24,    -1,    63,    64,
+      -1,    66,    -1,    31,    69,    -1,    -1,    -1,    36,    -1,
+      38,    39,    40,    41,    42,    -1,    44,    82,    83,    84,
+      85,    86,    -1,    -1,    -1,    -1,    91,    92,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
+      -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    11,
+      12,    13,    14,    -1,    16,    83,    84,    -1,    -1,    21,
+      22,    89,    24,    -1,    -1,    93,    -1,    -1,    -1,    31,
+      -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    40,    -1,
+      42,    -1,    44,    -1,    11,    12,    13,    14,    -1,    16,
+      -1,    -1,    -1,    55,    21,    22,    -1,    24,    -1,    -1,
+      -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
+      72,    73,    74,    75,    76,    42,    -1,    44,    -1,    -1,
+      -1,    83,    84,    -1,    -1,    -1,    -1,    89,    -1,    -1,
+      -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
       -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,
-      -1,    -1,    -1,    80,    -1,    -1,    83,    84,    -1,    -1,
-      -1,    -1,    89,    -1,    -1,    -1,    93,    11,    12,    13,
-      14,    -1,    16,    17,    18,    19,    20,    21,    22,    46,
-      24,    -1,    26,    -1,    -1,    -1,    30,    -1,    32,    33,
-      57,    58,    -1,    -1,    -1,    62,    63,    64,    42,    66,
-      44,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    53,
-      54,    -1,    56,    -1,    81,    82,    83,    84,    85,    86,
-      -1,    65,    -1,    -1,    91,    92,    -1,    -1,    72,    73,
-      74,    75,    76,    -1,    -1,    -1,    80,    -1,    -1,    83,
-      84,    11,    12,    13,    14,    89,    16,    -1,    -1,    93,
-      -1,    21,    22,    -1,    24,    -1,    63,    64,    -1,    66,
-      -1,    31,    69,    -1,    -1,    -1,    36,    -1,    38,    39,
-      40,    41,    42,    -1,    44,    82,    83,    84,    85,    86,
-      -1,    -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
-      -1,    -1,    72,    73,    74,    75,    76,    11,    12,    13,
-      14,    -1,    16,    83,    84,    -1,    -1,    21,    22,    89,
-      24,    -1,    -1,    93,    -1,    -1,    -1,    31,    -1,    -1,
-      -1,    -1,    -1,    -1,    38,    -1,    40,    -1,    42,    -1,
-      44,    -1,    11,    12,    13,    14,    -1,    16,    -1,    -1,
-      -1,    55,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,
-      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
-      74,    75,    76,    42,    -1,    44,    -1,    -1,    -1,    83,
-      84,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,
-      -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
-      -1,    -1,    -1,    72,    73,    74,    75,    76,    11,    12,
-      13,    14,    -1,    16,    83,    84,    -1,    -1,    21,    22,
-      89,    24,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    11,    12,    13,    14,    -1,    16,    42,
-      -1,    44,    -1,    21,    22,    -1,    24,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    63,    64,    -1,    66,    -1,    -1,
-      69,    -1,    65,    -1,    42,    -1,    44,    -1,    -1,    72,
-      73,    74,    75,    76,    83,    84,    85,    86,    -1,    -1,
-      83,    84,    91,    92,    -1,    -1,    89,    65,    -1,    -1,
-      93,    -1,    -1,    -1,    72,    73,    74,    75,    76,    -1,
-      -1,    40,    -1,    -1,    -1,    83,    84,    46,    -1,    -1,
-      -1,    89,    -1,    -1,    -1,    93,    -1,    -1,    57,    58,
-      -1,    -1,    -1,    62,    63,    64,    -1,    66,    -1,    -1,
-      69,    70,    71,    40,    -1,    -1,    -1,    -1,    -1,    46,
-      -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
-      57,    58,    91,    92,    -1,    62,    63,    64,    -1,    66,
+      11,    12,    13,    14,    -1,    16,    83,    84,    -1,    -1,
+      21,    22,    89,    24,    -1,    -1,    93,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    11,    12,    13,    14,    -1,
+      16,    42,    -1,    44,    -1,    21,    22,    -1,    24,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    63,    64,    -1,    66,
+      -1,    -1,    69,    -1,    65,    -1,    42,    -1,    44,    -1,
+      -1,    72,    73,    74,    75,    76,    83,    84,    85,    86,
+      -1,    -1,    83,    84,    91,    92,    -1,    -1,    89,    65,
+      -1,    -1,    93,    -1,    -1,    -1,    72,    73,    74,    75,
+      76,    -1,    -1,    40,    -1,    -1,    -1,    83,    84,    46,
+      -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    -1,    -1,
+      57,    58,    -1,    -1,    -1,    62,    63,    64,    -1,    66,
       -1,    -1,    69,    70,    71,    40,    -1,    -1,    -1,    -1,
       -1,    46,    -1,    -1,    -1,    82,    83,    84,    85,    86,
       -1,    -1,    57,    58,    91,    92,    -1,    62,    63,    64,
@@ -1185,28 +1184,38 @@ static const yytype_int16 yycheck[] =
       69,    70,    71,    40,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
       57,    58,    91,    92,    -1,    62,    63,    64,    -1,    66,
-      -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    48,    -1,    -1,    82,    83,    84,    85,    86,
-      -1,    57,    58,    -1,    91,    92,    62,    63,    64,    -1,
-      66,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,
-      86,    -1,    57,    58,    -1,    91,    92,    62,    63,    64,
+      -1,    -1,    69,    70,    71,    40,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,
+      -1,    -1,    57,    58,    91,    92,    -1,    62,    63,    64,
       -1,    66,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
-      -1,    -1,    77,    78,    -1,    -1,    -1,    82,    83,    84,
+      -1,    -1,    -1,    -1,    48,    -1,    -1,    82,    83,    84,
       85,    86,    -1,    57,    58,    -1,    91,    92,    62,    63,
       64,    -1,    66,    -1,    -1,    69,    70,    71,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
-      84,    85,    86,    -1,    57,    58,    90,    91,    92,    62,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,
+      84,    85,    86,    -1,    57,    58,    -1,    91,    92,    62,
       63,    64,    -1,    66,    -1,    -1,    69,    70,    71,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      83,    84,    85,    86,    -1,    57,    58,    90,    91,    92,
-      62,    63,    64,    -1,    66,    -1,    -1,    69,    70,    71,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,
-      82,    83,    84,    85,    86,    -1,    57,    58,    -1,    91,
-      92,    62,    63,    64,    -1,    66,    -1,    -1,    69,    70,
-      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    82,    83,    84,    85,    86,    -1,    -1,    -1,    -1,
-      91,    92
+      83,    84,    85,    86,    -1,    -1,    -1,    -1,    91,    92,
+      57,    58,    95,    -1,    -1,    62,    63,    64,    -1,    66,
+      -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,
+      -1,    -1,    -1,    -1,    91,    92,    57,    58,    95,    -1,
+      -1,    62,    63,    64,    -1,    66,    -1,    -1,    69,    70,
+      71,    -1,    -1,    -1,    -1,    -1,    77,    78,    -1,    -1,
+      -1,    82,    83,    84,    85,    86,    -1,    57,    58,    -1,
+      91,    92,    62,    63,    64,    -1,    66,    -1,    -1,    69,
+      70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    81,    82,    83,    84,    85,    86,    -1,    57,    58,
+      90,    91,    92,    62,    63,    64,    -1,    66,    -1,    -1,
+      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    57,
+      58,    90,    91,    92,    62,    63,    64,    -1,    66,    -1,
+      -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    81,    82,    83,    84,    85,    86,    -1,
+      57,    58,    -1,    91,    92,    62,    63,    64,    -1,    66,
+      -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,
+      -1,    -1,    -1,    -1,    91,    92
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1220,33 +1229,33 @@ static const yytype_uint8 yystos[] =
       93,    97,    99,   100,   101,   102,   103,   110,   111,   112,
      117,   118,   119,   122,   125,   127,   134,    88,    98,    21,
       42,   100,   118,   118,   118,    89,   118,   135,    21,    89,
-     135,   126,    43,    21,   120,    31,    36,    38,    39,    40,
-      41,   118,   123,   124,    21,   118,    48,    49,    12,    13,
-      21,    21,    21,    21,   118,    55,   123,   124,    21,   121,
-     118,   118,   118,   118,   118,   118,    21,    89,   118,   118,
-     118,   135,     0,    98,    89,    81,    89,   109,   118,   118,
-      57,    58,    62,    63,    64,    66,    69,    70,    71,    82,
-      83,    84,    85,    86,    91,    92,    89,   118,   118,   135,
-      95,   135,   135,   135,    95,   118,   118,    38,   124,   128,
-      35,    67,    68,    21,    46,    81,   118,    46,    81,    45,
-     129,    48,   124,    95,    40,    46,    40,    46,    40,    46,
-      40,    46,    77,    78,   130,    21,    90,    94,    99,   109,
-     118,   109,   118,    45,    81,   115,   118,   118,   118,   118,
-     118,   118,   118,   118,   118,   118,   118,   118,   118,   118,
-     118,   118,    90,   118,    90,    21,   118,   114,    21,   118,
-     118,   118,   118,    46,    81,   118,   118,   114,   118,    21,
+     118,   135,   136,   126,    43,    21,   120,    31,    36,    38,
+      39,    40,    41,   118,   123,   124,    21,   118,    48,    49,
+      12,    13,    21,    21,    21,    21,   118,    55,   123,   124,
+      21,   121,   118,   118,   118,   118,   118,   118,    21,    89,
+     118,   118,   118,   135,     0,    98,    89,    81,    89,   109,
+     118,   118,    57,    58,    62,    63,    64,    66,    69,    70,
+      71,    82,    83,    84,    85,    86,    91,    92,    89,   118,
+     118,   135,    95,   135,   135,    95,   135,    95,   118,   118,
+      38,   124,   128,    35,    67,    68,    21,    46,    81,   118,
+      46,    81,    45,   129,    48,   124,    95,    40,    46,    40,
+      46,    40,    46,    40,    46,    77,    78,   130,    21,    90,
+      94,    99,   109,   118,   109,   118,    45,    81,   115,   118,
      118,   118,   118,   118,   118,   118,   118,   118,   118,   118,
-     114,    90,    95,    90,   115,    90,    98,   114,   118,    21,
-     132,   118,   118,   132,    40,    40,    40,    40,   131,   135,
-     116,    27,    46,   116,   101,   119,    95,    98,    98,   118,
-     118,   118,   118,   132,    90,    98,   102,   115,    46,   118,
-     115,   115,    21,    95,   133,   133,    98,    25,   118,   115,
-      25,    50,   114,    29,    50,   106,   107,   113,    21,   116,
-     116,   133,   115,   116,   116,   105,   106,   108,   113,   114,
-     107,   115,   109,   116,   116,   115,   115,   108,   115,   109,
-     101,    50,   104,    45,    25,   115,    25,    25,    25,    45,
-     115,   114,   115,   114,    25,   114,   101,   102,   116,   115,
-     115
+     118,   118,   118,   118,   118,    90,   118,    90,   118,    21,
+     118,   114,    21,   118,   118,   118,   118,    46,    81,   118,
+     118,   114,   118,    21,   118,   118,   118,   118,   118,   118,
+     118,   118,   118,   118,   114,    90,    95,    90,   115,    90,
+      98,   114,   118,    21,   132,   118,   118,   132,    40,    40,
+      40,    40,   131,   135,   116,    27,    46,   116,   101,   119,
+      95,    98,    98,   118,   118,   118,   118,   132,    90,    98,
+     102,   115,    46,   118,   115,   115,    21,    95,   133,   133,
+      98,    25,   118,   115,    25,    50,   114,    29,    50,   106,
+     107,   113,    21,   116,   116,   133,   115,   116,   116,   105,
+     106,   108,   113,   114,   107,   115,   109,   116,   116,   115,
+     115,   108,   115,   109,   101,    50,   104,    45,    25,   115,
+      25,    25,    25,    45,   115,   114,   115,   114,    25,   114,
+     101,   102,   116,   115,   115
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2911,9 +2920,19 @@ yyreduce:
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
+  case 152:
+#line 602 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = 1; ;}
+    break;
+
+  case 153:
+#line 603 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
+    break;
+
 
 /* Line 1267 of yacc.c.  */
-#line 2917 "engines/director/lingo/lingo-gr.cpp"
+#line 2936 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3127,6 +3146,6 @@ yyreturn:
 }
 
 
-#line 602 "engines/director/lingo/lingo-gr.y"
+#line 606 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index d6fe5cd..e2e874b 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -103,7 +103,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %token tON tME
 
 %type<code> asgn begin elseif elsestmtoneliner end expr if when repeatwhile repeatwith stmtlist
-%type<narg> argdef arglist
+%type<narg> argdef arglist nonemptyarglist
 
 %right '='
 %left tLT tLE tGT tGE tNEQ tCONTAINS tSTARTS
@@ -586,7 +586,7 @@ argstore:	  /* nothing */		{ g_lingo->codeArgStore(); }
 	;
 
 
-macro: ID arglist		{
+macro: ID nonemptyarglist	{
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString($1->c_str());
 		inst numpar = 0;
@@ -599,4 +599,8 @@ arglist:  /* nothing */ 	{ $$ = 0; }
 	| arglist ',' expr		{ $$ = $1 + 1; }
 	;
 
+nonemptyarglist:  expr		{ $$ = 1; }
+	| arglist ',' expr		{ $$ = $1 + 1; }
+	;
+
 %%


Commit: 83ab1fc44127175b47d4224490a592a910e5aa40
    https://github.com/scummvm/scummvm/commit/83ab1fc44127175b47d4224490a592a910e5aa40
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-23T19:39:50+01:00

Commit Message:
DIRECTOR: Lingo: Fix all remaining reduce/reduce conflicts

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 5b1db0e..d3a68a2 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -518,18 +518,18 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  114
+#define YYFINAL  113
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1635
+#define YYLAST   1633
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  96
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  41
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  153
+#define YYNRULES  151
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  335
+#define YYNSTATES  333
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -583,106 +583,106 @@ static const yytype_uint8 yytranslate[] =
 static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     7,     9,    12,    14,    15,    17,    19,
-      21,    23,    25,    30,    35,    40,    45,    50,    56,    61,
-      66,    72,    74,    76,    78,    80,    88,    99,   111,   115,
-     123,   134,   145,   152,   163,   174,   175,   179,   182,   184,
-     187,   189,   196,   198,   205,   207,   211,   215,   218,   222,
-     224,   226,   227,   228,   229,   232,   235,   239,   241,   243,
-     245,   247,   249,   254,   256,   258,   261,   263,   267,   271,
-     275,   279,   283,   287,   291,   295,   299,   303,   307,   311,
-     314,   318,   322,   326,   330,   333,   336,   340,   344,   349,
-     354,   359,   366,   371,   378,   383,   390,   395,   402,   405,
-     407,   409,   412,   414,   417,   420,   423,   426,   428,   433,
-     436,   441,   448,   453,   456,   460,   462,   466,   468,   472,
-     475,   478,   481,   484,   488,   491,   494,   496,   500,   503,
-     506,   509,   513,   516,   517,   521,   522,   531,   534,   535,
-     544,   545,   546,   557,   558,   560,   564,   569,   570,   573,
-     574,   576,   580,   582
+      21,    26,    31,    36,    41,    46,    52,    57,    62,    68,
+      70,    72,    74,    76,    84,    95,   107,   111,   119,   130,
+     141,   148,   159,   170,   171,   175,   178,   180,   183,   185,
+     192,   194,   201,   203,   207,   211,   214,   218,   220,   222,
+     223,   224,   225,   228,   231,   235,   237,   239,   241,   243,
+     245,   250,   252,   254,   257,   259,   263,   267,   271,   275,
+     279,   283,   287,   291,   295,   299,   303,   307,   310,   314,
+     318,   322,   326,   329,   332,   336,   340,   345,   350,   355,
+     362,   367,   374,   379,   386,   391,   398,   401,   403,   405,
+     408,   410,   413,   416,   419,   422,   424,   429,   432,   437,
+     444,   449,   452,   456,   458,   462,   464,   468,   471,   474,
+     477,   480,   484,   487,   490,   492,   496,   499,   502,   505,
+     509,   512,   513,   517,   518,   527,   530,   531,   540,   541,
+     542,   553,   554,   556,   560,   565,   566,   569,   570,   572,
+     576,   578
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
       97,     0,    -1,    97,    98,    99,    -1,    99,    -1,     1,
-      98,    -1,    88,    -1,    -1,   127,    -1,   119,    -1,   134,
-      -1,   100,    -1,   102,    -1,    42,   118,    35,    21,    -1,
-      42,   118,    67,   118,    -1,    42,   118,    68,   118,    -1,
-      44,    21,    81,   118,    -1,    44,    12,    81,   118,    -1,
-      44,    13,   118,    81,   118,    -1,    44,    21,    46,   118,
-      -1,    44,    12,    46,   118,    -1,    44,    13,   118,    46,
-     118,    -1,   118,    -1,   119,    -1,   101,    -1,   103,    -1,
-     110,    89,   109,    90,   116,   115,    25,    -1,   111,    81,
-     118,   115,    46,   118,   115,   116,   115,    25,    -1,   111,
-      81,   118,   115,    27,    46,   118,   115,   116,   115,    25,
-      -1,   117,   118,   115,    -1,   112,   109,    45,    98,   116,
-     115,    25,    -1,   112,   109,    45,    98,   116,   115,    50,
-     116,   115,    25,    -1,   112,   109,    45,    98,   116,   115,
-     114,   105,   115,    25,    -1,   112,   109,    45,   114,   101,
-     115,    -1,   112,   109,    45,   114,   101,   115,    50,   114,
-     101,   115,    -1,   112,   109,    45,   114,   101,   115,   106,
-     115,   104,   115,    -1,    -1,    50,   114,   101,    -1,   105,
-     108,    -1,   108,    -1,   106,   107,    -1,   107,    -1,   113,
-     109,    45,   114,   102,   115,    -1,   106,    -1,   113,   109,
-      45,   114,   116,   115,    -1,   118,    -1,   118,    81,   118,
-      -1,    89,   109,    90,    -1,    43,    49,    -1,    43,    48,
-      21,    -1,    34,    -1,    29,    -1,    -1,    -1,    -1,   116,
-      98,    -1,   116,   102,    -1,    47,    21,    45,    -1,    11,
-      -1,    14,    -1,    24,    -1,    22,    -1,    16,    -1,    21,
-      89,   135,    90,    -1,    21,    -1,    12,    -1,    13,   118,
-      -1,   100,    -1,   118,    83,   118,    -1,   118,    84,   118,
-      -1,   118,    85,   118,    -1,   118,    86,   118,    -1,   118,
-      66,   118,    -1,   118,    91,   118,    -1,   118,    92,   118,
-      -1,   118,    62,   118,    -1,   118,    57,   118,    -1,   118,
-      58,   118,    -1,   118,    63,   118,    -1,   118,    64,   118,
-      -1,    65,   118,    -1,   118,    82,   118,    -1,   118,    69,
-     118,    -1,   118,    70,   118,    -1,   118,    71,   118,    -1,
-      83,   118,    -1,    84,   118,    -1,    89,   118,    90,    -1,
-      93,   135,    94,    -1,    76,   118,    77,   118,    -1,    76,
-     118,    78,   118,    -1,    72,   118,    40,   118,    -1,    72,
-     118,    46,   118,    40,   118,    -1,    73,   118,    40,   118,
-      -1,    73,   118,    46,   118,    40,   118,    -1,    74,   118,
-      40,   118,    -1,    74,   118,    46,   118,    40,   118,    -1,
-      75,   118,    40,   118,    -1,    75,   118,    46,   118,    40,
-     118,    -1,    42,   118,    -1,   122,    -1,   125,    -1,    30,
-      43,    -1,    30,    -1,    32,   120,    -1,    56,   121,    -1,
-      18,   118,    -1,    17,   118,    -1,    17,    -1,    19,    89,
-     135,    90,    -1,    19,   135,    -1,    80,    89,    21,    90,
-      -1,    80,    89,    21,    95,   135,    90,    -1,    53,   118,
-      48,   118,    -1,    53,   118,    -1,    20,    21,   135,    -1,
-      21,    -1,   120,    95,    21,    -1,    21,    -1,   121,    95,
-      21,    -1,    33,    36,    -1,    33,    39,    -1,    33,    41,
-      -1,    33,   123,    -1,    33,   123,   124,    -1,    33,   124,
-      -1,    31,   118,    -1,   118,    -1,    40,    38,   118,    -1,
-      38,   118,    -1,    54,    55,    -1,    54,   123,    -1,    54,
-     123,   124,    -1,    54,   124,    -1,    -1,    26,   126,   135,
-      -1,    -1,    37,    21,   128,   114,   132,    98,   133,   116,
-      -1,    51,    21,    -1,    -1,    52,    21,   129,   114,   132,
-      98,   133,   116,    -1,    -1,    -1,    79,    21,   130,   114,
-     131,   132,    98,   133,   116,    25,    -1,    -1,    21,    -1,
-     132,    95,    21,    -1,   132,    98,    95,    21,    -1,    -1,
-      21,   136,    -1,    -1,   118,    -1,   135,    95,   118,    -1,
-     118,    -1,   135,    95,   118,    -1
+      98,    -1,    88,    -1,    -1,   127,    -1,   134,    -1,   102,
+      -1,    42,   118,    35,    21,    -1,    42,   118,    67,   118,
+      -1,    42,   118,    68,   118,    -1,    44,    21,    81,   118,
+      -1,    44,    12,    81,   118,    -1,    44,    13,   118,    81,
+     118,    -1,    44,    21,    46,   118,    -1,    44,    12,    46,
+     118,    -1,    44,    13,   118,    46,   118,    -1,   118,    -1,
+     119,    -1,   101,    -1,   103,    -1,   110,    89,   109,    90,
+     116,   115,    25,    -1,   111,    81,   118,   115,    46,   118,
+     115,   116,   115,    25,    -1,   111,    81,   118,   115,    27,
+      46,   118,   115,   116,   115,    25,    -1,   117,   118,   115,
+      -1,   112,   109,    45,    98,   116,   115,    25,    -1,   112,
+     109,    45,    98,   116,   115,    50,   116,   115,    25,    -1,
+     112,   109,    45,    98,   116,   115,   114,   105,   115,    25,
+      -1,   112,   109,    45,   114,   101,   115,    -1,   112,   109,
+      45,   114,   101,   115,    50,   114,   101,   115,    -1,   112,
+     109,    45,   114,   101,   115,   106,   115,   104,   115,    -1,
+      -1,    50,   114,   101,    -1,   105,   108,    -1,   108,    -1,
+     106,   107,    -1,   107,    -1,   113,   109,    45,   114,   102,
+     115,    -1,   106,    -1,   113,   109,    45,   114,   116,   115,
+      -1,   118,    -1,   118,    81,   118,    -1,    89,   109,    90,
+      -1,    43,    49,    -1,    43,    48,    21,    -1,    34,    -1,
+      29,    -1,    -1,    -1,    -1,   116,    98,    -1,   116,   102,
+      -1,    47,    21,    45,    -1,    11,    -1,    14,    -1,    24,
+      -1,    22,    -1,    16,    -1,    21,    89,   135,    90,    -1,
+      21,    -1,    12,    -1,    13,   118,    -1,   100,    -1,   118,
+      83,   118,    -1,   118,    84,   118,    -1,   118,    85,   118,
+      -1,   118,    86,   118,    -1,   118,    66,   118,    -1,   118,
+      91,   118,    -1,   118,    92,   118,    -1,   118,    62,   118,
+      -1,   118,    57,   118,    -1,   118,    58,   118,    -1,   118,
+      63,   118,    -1,   118,    64,   118,    -1,    65,   118,    -1,
+     118,    82,   118,    -1,   118,    69,   118,    -1,   118,    70,
+     118,    -1,   118,    71,   118,    -1,    83,   118,    -1,    84,
+     118,    -1,    89,   118,    90,    -1,    93,   135,    94,    -1,
+      76,   118,    77,   118,    -1,    76,   118,    78,   118,    -1,
+      72,   118,    40,   118,    -1,    72,   118,    46,   118,    40,
+     118,    -1,    73,   118,    40,   118,    -1,    73,   118,    46,
+     118,    40,   118,    -1,    74,   118,    40,   118,    -1,    74,
+     118,    46,   118,    40,   118,    -1,    75,   118,    40,   118,
+      -1,    75,   118,    46,   118,    40,   118,    -1,    42,   118,
+      -1,   122,    -1,   125,    -1,    30,    43,    -1,    30,    -1,
+      32,   120,    -1,    56,   121,    -1,    18,   118,    -1,    17,
+     118,    -1,    17,    -1,    19,    89,   135,    90,    -1,    19,
+     135,    -1,    80,    89,    21,    90,    -1,    80,    89,    21,
+      95,   135,    90,    -1,    53,   118,    48,   118,    -1,    53,
+     118,    -1,    20,    21,   135,    -1,    21,    -1,   120,    95,
+      21,    -1,    21,    -1,   121,    95,    21,    -1,    33,    36,
+      -1,    33,    39,    -1,    33,    41,    -1,    33,   123,    -1,
+      33,   123,   124,    -1,    33,   124,    -1,    31,   118,    -1,
+     118,    -1,    40,    38,   118,    -1,    38,   118,    -1,    54,
+      55,    -1,    54,   123,    -1,    54,   123,   124,    -1,    54,
+     124,    -1,    -1,    26,   126,   135,    -1,    -1,    37,    21,
+     128,   114,   132,    98,   133,   116,    -1,    51,    21,    -1,
+      -1,    52,    21,   129,   114,   132,    98,   133,   116,    -1,
+      -1,    -1,    79,    21,   130,   114,   131,   132,    98,   133,
+     116,    25,    -1,    -1,    21,    -1,   132,    95,    21,    -1,
+     132,    98,    95,    21,    -1,    -1,    21,   136,    -1,    -1,
+     118,    -1,   135,    95,   118,    -1,   118,    -1,   135,    95,
+     118,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
        0,   117,   117,   118,   119,   122,   127,   128,   129,   130,
-     131,   132,   135,   141,   142,   143,   149,   157,   165,   171,
-     179,   188,   189,   191,   192,   197,   210,   228,   242,   250,
-     260,   272,   284,   294,   304,   315,   316,   319,   320,   323,
-     324,   327,   335,   336,   344,   345,   346,   348,   350,   356,
-     362,   369,   371,   373,   374,   375,   378,   384,   385,   388,
-     391,   394,   397,   400,   404,   411,   417,   418,   419,   420,
+     133,   139,   140,   141,   147,   155,   163,   169,   177,   186,
+     187,   189,   190,   195,   208,   226,   240,   248,   258,   270,
+     282,   292,   302,   313,   314,   317,   318,   321,   322,   325,
+     333,   334,   342,   343,   344,   346,   348,   354,   360,   367,
+     369,   371,   372,   373,   376,   382,   383,   386,   389,   392,
+     395,   398,   402,   409,   415,   416,   417,   418,   419,   420,
      421,   422,   423,   424,   425,   426,   427,   428,   429,   430,
      431,   432,   433,   434,   435,   436,   437,   438,   439,   440,
-     441,   442,   443,   444,   445,   446,   447,   448,   451,   452,
-     453,   454,   455,   457,   458,   459,   462,   465,   468,   469,
-     470,   471,   472,   473,   474,   477,   478,   481,   482,   493,
-     494,   495,   496,   499,   502,   507,   508,   511,   512,   515,
-     516,   519,   522,   525,   525,   555,   555,   561,   564,   564,
-     569,   570,   569,   580,   581,   582,   583,   585,   589,   597,
-     598,   599,   602,   603
+     441,   442,   443,   444,   445,   446,   449,   450,   451,   452,
+     453,   455,   456,   457,   460,   463,   466,   467,   468,   469,
+     470,   471,   472,   475,   476,   479,   480,   491,   492,   493,
+     494,   497,   500,   505,   506,   509,   510,   513,   514,   517,
+     520,   523,   523,   553,   553,   559,   562,   562,   567,   568,
+     567,   578,   579,   580,   581,   583,   587,   595,   596,   597,
+     600,   601
 };
 #endif
 
@@ -737,42 +737,42 @@ static const yytype_uint16 yytoknum[] =
 static const yytype_uint8 yyr1[] =
 {
        0,    96,    97,    97,    97,    98,    99,    99,    99,    99,
-      99,    99,   100,   100,   100,   100,   100,   100,   100,   100,
-     100,   101,   101,   102,   102,   102,   102,   102,   102,   103,
-     103,   103,   103,   103,   103,   104,   104,   105,   105,   106,
-     106,   107,   108,   108,   109,   109,   109,   110,   111,   112,
-     113,   114,   115,   116,   116,   116,   117,   118,   118,   118,
+     100,   100,   100,   100,   100,   100,   100,   100,   100,   101,
+     101,   102,   102,   102,   102,   102,   102,   103,   103,   103,
+     103,   103,   103,   104,   104,   105,   105,   106,   106,   107,
+     108,   108,   109,   109,   109,   110,   111,   112,   113,   114,
+     115,   116,   116,   116,   117,   118,   118,   118,   118,   118,
      118,   118,   118,   118,   118,   118,   118,   118,   118,   118,
      118,   118,   118,   118,   118,   118,   118,   118,   118,   118,
      118,   118,   118,   118,   118,   118,   118,   118,   118,   118,
-     118,   118,   118,   118,   118,   118,   118,   118,   119,   119,
+     118,   118,   118,   118,   118,   118,   119,   119,   119,   119,
      119,   119,   119,   119,   119,   119,   119,   119,   119,   119,
-     119,   119,   119,   119,   119,   120,   120,   121,   121,   122,
-     122,   122,   122,   122,   122,   123,   123,   124,   124,   125,
-     125,   125,   125,   126,   125,   128,   127,   127,   129,   127,
-     130,   131,   127,   132,   132,   132,   132,   133,   134,   135,
-     135,   135,   136,   136
+     119,   119,   119,   120,   120,   121,   121,   122,   122,   122,
+     122,   122,   122,   123,   123,   124,   124,   125,   125,   125,
+     125,   126,   125,   128,   127,   127,   129,   127,   130,   131,
+     127,   132,   132,   132,   132,   133,   134,   135,   135,   135,
+     136,   136
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
        0,     2,     3,     1,     2,     1,     0,     1,     1,     1,
-       1,     1,     4,     4,     4,     4,     4,     5,     4,     4,
-       5,     1,     1,     1,     1,     7,    10,    11,     3,     7,
-      10,    10,     6,    10,    10,     0,     3,     2,     1,     2,
-       1,     6,     1,     6,     1,     3,     3,     2,     3,     1,
-       1,     0,     0,     0,     2,     2,     3,     1,     1,     1,
-       1,     1,     4,     1,     1,     2,     1,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     2,
-       3,     3,     3,     3,     2,     2,     3,     3,     4,     4,
-       4,     6,     4,     6,     4,     6,     4,     6,     2,     1,
-       1,     2,     1,     2,     2,     2,     2,     1,     4,     2,
-       4,     6,     4,     2,     3,     1,     3,     1,     3,     2,
-       2,     2,     2,     3,     2,     2,     1,     3,     2,     2,
-       2,     3,     2,     0,     3,     0,     8,     2,     0,     8,
-       0,     0,    10,     0,     1,     3,     4,     0,     2,     0,
-       1,     3,     1,     3
+       4,     4,     4,     4,     4,     5,     4,     4,     5,     1,
+       1,     1,     1,     7,    10,    11,     3,     7,    10,    10,
+       6,    10,    10,     0,     3,     2,     1,     2,     1,     6,
+       1,     6,     1,     3,     3,     2,     3,     1,     1,     0,
+       0,     0,     2,     2,     3,     1,     1,     1,     1,     1,
+       4,     1,     1,     2,     1,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     2,     3,     3,
+       3,     3,     2,     2,     3,     3,     4,     4,     4,     6,
+       4,     6,     4,     6,     4,     6,     2,     1,     1,     2,
+       1,     2,     2,     2,     2,     1,     4,     2,     4,     6,
+       4,     2,     3,     1,     3,     1,     3,     2,     2,     2,
+       2,     3,     2,     2,     1,     3,     2,     2,     2,     3,
+       2,     0,     3,     0,     8,     2,     0,     8,     0,     0,
+      10,     0,     1,     3,     4,     0,     2,     0,     1,     3,
+       1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -780,399 +780,402 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    57,    64,     0,    58,    61,   107,     0,   149,
-       0,    63,    60,    59,   133,   102,     0,     0,    49,     0,
+       0,     0,    55,    62,     0,    56,    59,   105,     0,   147,
+       0,    61,    58,    57,   131,   100,     0,     0,    47,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     149,     0,     3,    66,    23,    11,    24,     0,     0,     0,
-       0,    21,     8,    99,   100,     7,     9,     5,     4,    63,
-       0,    66,    65,   106,   105,   149,   150,   109,   149,   149,
-     152,     0,   148,   149,   101,   115,   103,     0,   119,     0,
-     120,     0,   121,   126,   122,   124,   135,    98,     0,    47,
-       0,     0,     0,     0,   137,   138,   113,   129,   130,   132,
-     117,   104,    79,     0,     0,     0,     0,     0,   140,     0,
-      84,    85,     0,     0,     1,     6,     0,     0,     0,     0,
-      44,    52,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   149,     0,
-     150,     0,     0,   114,     0,     0,   134,     0,   125,   128,
-       0,   123,    51,     0,     0,     0,    48,     0,     0,     0,
-       0,     0,    56,    51,     0,   131,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    51,     0,    86,
-      87,     2,     0,    52,     0,     0,    51,     0,    28,    75,
-      76,    74,    77,    78,    71,    81,    82,    83,    80,    67,
-      68,    69,    70,    72,    73,   108,   151,    62,   153,   116,
-     127,   143,    12,    13,    14,    19,    16,     0,     0,    18,
-      15,   143,   112,   118,    90,     0,    92,     0,    94,     0,
-      96,     0,    88,    89,   141,   110,   149,    53,     0,    46,
-      53,     0,    45,   144,     0,    20,    17,     0,     0,     0,
-       0,     0,   143,     0,    52,     0,     0,    52,    52,    22,
-       0,   147,   147,    91,    93,    95,    97,     0,   111,    54,
-      55,     0,     0,    52,    51,    32,   145,     0,    53,    53,
-     147,    25,    52,    53,    29,    53,     0,    50,    51,    52,
-      40,     0,   146,   136,   139,    53,    53,    52,    52,    52,
-      42,    38,     0,     0,    39,    35,     0,     0,    52,     0,
-       0,    37,     0,     0,    52,    51,    52,    51,   142,     0,
-      26,    30,    31,    51,    33,     0,    34,     0,    27,    53,
-      36,    52,    52,    41,    43
+     147,     0,     3,    64,    21,     9,    22,     0,     0,     0,
+       0,    19,    20,    97,    98,     7,     8,     5,     4,    61,
+       0,    63,   104,   103,   147,   148,   107,   147,   147,   150,
+       0,   146,   147,    99,   113,   101,     0,   117,     0,   118,
+       0,   119,   124,   120,   122,   133,    96,     0,    45,     0,
+       0,     0,     0,   135,   136,   111,   127,   128,   130,   115,
+     102,    77,     0,     0,     0,     0,     0,   138,     0,    82,
+      83,     0,     0,     1,     6,     0,     0,     0,     0,    42,
+      50,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   147,     0,   148,
+       0,     0,   112,     0,     0,   132,     0,   123,   126,     0,
+     121,    49,     0,     0,     0,    46,     0,     0,     0,     0,
+       0,    54,    49,     0,   129,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    49,     0,    84,    85,
+       2,     0,    50,     0,     0,    49,     0,    26,    73,    74,
+      72,    75,    76,    69,    79,    80,    81,    78,    65,    66,
+      67,    68,    70,    71,   106,   149,    60,   151,   114,   125,
+     141,    10,    11,    12,    17,    14,     0,     0,    16,    13,
+     141,   110,   116,    88,     0,    90,     0,    92,     0,    94,
+       0,    86,    87,   139,   108,   147,    51,     0,    44,    51,
+       0,    43,   142,     0,    18,    15,     0,     0,     0,     0,
+       0,   141,     0,    50,     0,     0,    50,    50,     0,   145,
+     145,    89,    91,    93,    95,     0,   109,    52,    53,     0,
+       0,    50,    49,    30,   143,     0,    51,    51,   145,    23,
+      50,    51,    27,    51,     0,    48,    49,    50,    38,     0,
+     144,   134,   137,    51,    51,    50,    50,    50,    40,    36,
+       0,     0,    37,    33,     0,     0,    50,     0,     0,    35,
+       0,     0,    50,    49,    50,    49,   140,     0,    24,    28,
+      29,    49,    31,     0,    32,     0,    25,    51,    34,    50,
+      50,    39,    41
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    41,   269,    42,    61,    44,   270,    46,   316,   299,
-     300,   290,   301,   119,    47,    48,    49,   291,   211,   188,
-     254,    50,    51,   259,    76,   101,    53,    84,    85,    54,
-      73,    55,   152,   163,   177,   252,   244,   278,    56,   144,
-      72
+      -1,    41,   267,    42,    43,    44,   268,    46,   314,   297,
+     298,   288,   299,   118,    47,    48,    49,   289,   210,   187,
+     253,    50,    51,    52,    75,   100,    53,    83,    84,    54,
+      72,    55,   151,   162,   176,   251,   243,   276,    56,   143,
+      71
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -241
+#define YYPACT_NINF -240
 static const yytype_int16 yypact[] =
 {
-     288,   -17,  -241,  -241,   963,  -241,  -241,   963,   963,  1029,
-      35,   371,  -241,  -241,  -241,    21,    54,   862,  -241,    68,
-     963,    58,    74,    76,    81,    87,   963,   928,    88,   963,
-     963,   963,   963,   963,   963,    91,   -10,   963,   963,   963,
-     963,     2,  -241,     3,  -241,  -241,  -241,    24,    33,  1054,
-     963,  1543,  -241,  -241,  -241,  -241,  -241,  -241,  -241,    27,
-     963,  -241,  1543,  1543,  1543,   963,  1543,    25,   963,   963,
-    1347,    47,  -241,   963,  -241,  -241,    50,   963,  -241,   963,
-    -241,    83,  -241,  1543,    65,  -241,  -241,   143,   126,  -241,
-     -32,   963,   -24,   103,  -241,  -241,  1316,  -241,    65,  -241,
-    -241,    55,   -33,   340,  1093,  1125,  1157,  1419,  -241,   131,
-     -33,   -33,  1481,   -70,  -241,   456,  1054,   963,  1054,   108,
-    1512,  1543,   963,   963,   963,   963,   963,   963,   963,   963,
-     963,   963,   963,   963,   963,   963,   963,   963,   963,   143,
-    1481,   -23,   963,    25,    -7,   963,    25,   136,  1543,  1543,
-     963,  -241,  -241,   139,   963,   963,  -241,   963,   963,   765,
-     963,   963,  -241,  -241,   963,  -241,   142,   963,   963,   963,
-     963,   963,   963,   963,   963,   963,   963,  -241,     6,  -241,
-    -241,  -241,    77,  1543,    90,  1450,   -17,   963,  -241,   825,
-     825,   825,   -33,   -33,   -33,  1543,   825,   825,  1023,   130,
-     130,   -33,   -33,  1543,  1543,  -241,  1543,  -241,  1383,  -241,
-    1543,   145,  -241,  1543,  1543,  1543,  1543,   963,   963,  1543,
-    1543,   145,  1543,  -241,  1543,  1189,  1543,  1221,  1543,  1253,
-    1543,  1285,  1543,  1543,  -241,  -241,   963,  -241,    -4,  -241,
-    -241,   788,  1543,  -241,   -11,  1543,  1543,   -11,   963,   963,
-     963,   963,   145,     9,   622,   118,   963,   622,  -241,  -241,
-     161,    89,    89,  1543,  1543,  1543,  1543,   -11,  -241,  -241,
-    -241,   160,   963,  1543,    -5,   -13,  -241,   165,  -241,  -241,
-      89,  -241,  1543,  -241,  -241,  -241,   158,  -241,  -241,   158,
-    -241,  1054,  -241,   622,   622,  -241,  -241,   622,   622,   158,
-     158,  -241,  1054,   788,  -241,   141,   147,   539,   622,   170,
-     172,  -241,   177,   159,  -241,  -241,  -241,  -241,  -241,   178,
-    -241,  -241,  -241,  -241,  -241,   788,  -241,   705,  -241,   705,
-    -241,  -241,   622,  -241,  -241
+     286,   -64,  -240,  -240,   961,  -240,  -240,   961,   961,  1027,
+      35,   369,  -240,  -240,  -240,    53,    67,   860,  -240,    77,
+     961,   -26,    45,    80,    81,    82,   961,   926,    83,   961,
+     961,   961,   961,   961,   961,    84,    18,   961,   961,   961,
+     961,     2,  -240,  -240,  -240,  -240,  -240,    19,    25,  1052,
+     961,  1541,  -240,  -240,  -240,  -240,  -240,  -240,  -240,    22,
+     961,  1541,  1541,  1541,   961,  1541,    20,   961,   961,  1345,
+      24,  -240,   961,  -240,  -240,    26,   961,  -240,   961,  -240,
+      74,  -240,  1541,    36,  -240,  -240,   142,    92,  -240,   -39,
+     961,   -32,    75,  -240,  -240,  1314,  -240,    36,  -240,  -240,
+      46,   -66,   338,  1091,  1123,  1155,  1417,  -240,   119,   -66,
+     -66,  1479,    -9,  -240,   454,  1052,   961,  1052,    99,  1510,
+    1541,   961,   961,   961,   961,   961,   961,   961,   961,   961,
+     961,   961,   961,   961,   961,   961,   961,   961,   142,  1479,
+     -12,   961,    20,    -8,   961,    20,   125,  1541,  1541,   961,
+    -240,  -240,   126,   961,   961,  -240,   961,   961,   763,   961,
+     961,  -240,  -240,   961,  -240,   128,   961,   961,   961,   961,
+     961,   961,   961,   961,   961,   961,  -240,    -1,  -240,  -240,
+    -240,    61,  1541,    62,  1448,   -64,   961,  -240,   823,   823,
+     823,   -66,   -66,   -66,  1541,   823,   823,  1021,   129,   129,
+     -66,   -66,  1541,  1541,  -240,  1541,  -240,  1381,  -240,  1541,
+     135,  -240,  1541,  1541,  1541,  1541,   961,   961,  1541,  1541,
+     135,  1541,  -240,  1541,  1187,  1541,  1219,  1541,  1251,  1541,
+    1283,  1541,  1541,  -240,  -240,   961,  -240,    17,  -240,  -240,
+     786,  1541,  -240,   -24,  1541,  1541,   -24,   961,   961,   961,
+     961,   135,     5,   620,   113,   961,   620,  -240,   141,    68,
+      68,  1541,  1541,  1541,  1541,   -24,  -240,  -240,  -240,   140,
+     961,  1541,    -5,   -13,  -240,   145,  -240,  -240,    68,  -240,
+    1541,  -240,  -240,  -240,   150,  -240,  -240,   150,  -240,  1052,
+    -240,   620,   620,  -240,  -240,   620,   620,   150,   150,  -240,
+    1052,   786,  -240,   131,   138,   537,   620,   159,   160,  -240,
+     161,   146,  -240,  -240,  -240,  -240,  -240,   165,  -240,  -240,
+    -240,  -240,  -240,   786,  -240,   703,  -240,   703,  -240,  -240,
+     620,  -240,  -240
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -241,  -241,    12,    93,     7,  -240,     0,  -241,  -241,  -241,
-     -58,  -235,   -69,  -112,  -241,  -241,  -241,  -239,  -134,   -34,
-    -185,  -241,     1,    26,  -241,  -241,  -241,   204,   -16,  -241,
-    -241,  -241,  -241,  -241,  -241,  -241,  -206,  -218,  -241,     8,
-    -241
+    -240,  -240,    12,    87,  -240,  -239,     0,  -240,  -240,  -240,
+     -79,  -228,  -101,  -111,  -240,  -240,  -240,  -237,  -133,   -34,
+    -184,  -240,     1,  -240,  -240,  -240,  -240,   175,   -16,  -240,
+    -240,  -240,  -240,  -240,  -240,  -240,  -205,  -224,  -240,     8,
+    -240
 };
 
 /* 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 -152
+#define YYTABLE_NINF -150
 static const yytype_int16 yytable[] =
 {
-      45,   258,   114,   -10,   182,    62,   184,    43,    63,    64,
-      66,    99,    70,    58,   157,   247,   287,    67,    83,    71,
-     284,    87,   160,   255,   180,   142,    52,    96,    83,   221,
-     102,   103,   104,   105,   106,   107,   128,   288,   110,   111,
-     112,    66,   256,   234,   279,   285,   267,   302,   113,   158,
-     120,   121,   241,   115,   304,   257,    68,   161,   136,   137,
-     302,   139,   295,   314,    74,   304,   140,   205,   151,    66,
-     140,    57,   142,   141,    66,    75,   143,    57,   148,   109,
-     149,   146,   165,   207,   260,   330,    90,    91,   142,    86,
-      57,   -10,   159,   293,   294,    92,   235,    93,   297,   268,
-     298,   236,    94,    79,   142,    81,    88,    89,    95,   100,
-     307,   308,   108,   116,   117,    45,   138,   120,   183,   185,
-     142,   150,    43,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,    66,
-     286,    52,   145,   206,   332,   147,   208,   156,   162,   238,
-     166,   210,   178,   186,   303,   213,   214,   209,   215,   216,
-     212,   219,   220,   223,   272,   222,   243,   237,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   153,   306,
-     239,   325,   276,   327,   277,   281,   292,   287,   242,   329,
-     313,   315,   317,   125,   126,   320,   127,   321,   240,   128,
-     122,   123,   322,   328,   323,   124,   125,   126,   181,   127,
-     154,   155,   128,   129,   130,   134,   135,   289,   245,   246,
-     271,   136,   137,   274,   275,   131,   132,   133,   134,   135,
-     311,    98,     0,     0,   136,   137,     0,    66,     0,   283,
-       0,     0,     0,     0,   253,     0,     0,     0,   296,   263,
-     264,   265,   266,     0,     0,   305,   261,   273,     0,   262,
-       0,     0,     0,   309,   310,   312,     0,     0,     0,     0,
-       0,     0,     0,   282,   319,     0,     0,     0,     0,   280,
-     324,     0,   326,     0,     0,     0,     0,     0,    -6,     1,
-       0,     0,   120,     0,     0,     0,     0,   333,   334,     2,
-       3,     4,     5,   120,     6,     7,     8,     9,    10,    11,
-      12,     0,    13,     0,    14,     0,     0,     0,    15,     0,
-      16,    17,    18,     0,     0,    19,     0,   331,     0,   331,
-      20,    21,    22,     0,     0,    23,     0,     0,     0,    24,
-      25,    26,    27,     0,    28,     0,     0,     0,     0,     0,
-       0,     0,     0,    29,     0,     0,     0,     0,     0,     0,
-      30,    31,    32,    33,    34,     0,     0,    35,    36,     0,
-       0,    37,    38,     0,     0,     0,    -6,    39,     0,     0,
-     167,    40,     2,     3,     4,     5,   168,     6,     0,     0,
-       0,     0,    59,    12,     0,    13,     0,   122,   123,     0,
-       0,     0,   124,   125,   126,     0,   127,     0,     0,   128,
-     129,   130,     0,    60,     0,    22,     0,     0,     0,     0,
-       0,     0,   131,   132,   133,   134,   135,     0,     0,     0,
-       0,   136,   137,     0,     0,     0,    29,     0,     0,     0,
-       0,     0,     0,    30,    31,    32,    33,    34,     0,     0,
-       0,     0,     0,     0,    37,    38,     0,     0,     0,     0,
-      69,     0,     0,     0,    40,     0,  -149,     2,     3,     4,
-       5,     0,     6,     7,     8,     9,    10,    11,    12,     0,
+      45,   257,   113,   127,   181,    61,   183,   156,    62,    63,
+      65,    98,    69,    58,   159,   246,   285,    66,    82,    70,
+     282,    86,    87,    88,    57,   135,   136,    95,    82,   220,
+     101,   102,   103,   104,   105,   106,   277,   286,   109,   110,
+     111,    65,   157,   233,   254,   283,   265,   300,   112,   160,
+     119,   120,   240,   114,   293,   256,    67,    89,    90,   302,
+     300,   138,   312,   255,    57,   139,    91,   150,    65,   139,
+     302,   258,   140,    65,    78,   142,    80,   147,   204,   148,
+     145,   164,   206,   141,   328,   179,   141,   141,    74,   234,
+      57,   158,   291,   292,   235,   266,    73,   295,    85,   296,
+     141,    92,    93,    94,    99,   107,   116,   108,   115,   305,
+     306,   137,   149,   155,    45,   141,   119,   182,   184,   144,
+     161,   146,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,    65,   284,
+     177,   165,   205,   330,   185,   207,   208,   211,   237,   222,
+     209,   236,   238,   301,   212,   213,   242,   214,   215,   270,
+     218,   219,   274,   275,   221,   279,   290,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   152,   304,   285,
+     323,   313,   325,   315,   318,   319,   320,   241,   327,   311,
+     326,   321,   124,   125,   287,   126,   309,   239,   127,   121,
+     122,   180,    97,     0,   123,   124,   125,     0,   126,   153,
+     154,   127,   128,   129,   133,   134,     0,   244,   245,   269,
+     135,   136,   272,   273,   130,   131,   132,   133,   134,     0,
+       0,     0,     0,   135,   136,     0,    65,   281,     0,     0,
+       0,     0,     0,   252,     0,     0,   294,     0,   261,   262,
+     263,   264,     0,   303,     0,   259,   271,     0,   260,     0,
+       0,   307,   308,   310,     0,     0,     0,     0,     0,     0,
+       0,   280,   317,     0,     0,     0,     0,   278,   322,     0,
+     324,     0,     0,     0,     0,     0,    -6,     1,     0,     0,
+     119,     0,     0,     0,     0,   331,   332,     2,     3,     4,
+       5,   119,     6,     7,     8,     9,    10,    11,    12,     0,
       13,     0,    14,     0,     0,     0,    15,     0,    16,    17,
-      18,     0,     0,    19,     0,     0,     0,     0,    20,    21,
+      18,     0,     0,    19,     0,   329,     0,   329,    20,    21,
       22,     0,     0,    23,     0,     0,     0,    24,    25,    26,
       27,     0,    28,     0,     0,     0,     0,     0,     0,     0,
        0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
       32,    33,    34,     0,     0,    35,    36,     0,     0,    37,
-      38,     0,     0,     0,     0,    39,     0,     0,     0,    40,
-       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
-      59,    12,     0,    13,   318,    14,     0,     0,     0,    15,
-       0,    16,    17,    18,     0,     0,     0,     0,     0,     0,
-       0,    20,    21,    22,     0,     0,    23,     0,     0,     0,
-       0,     0,    26,    27,     0,    28,     0,     0,     0,     0,
-       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
-       0,    30,    31,    32,    33,    34,     0,     0,     0,    36,
-       0,     0,    37,    38,     0,     0,     0,    57,    39,     0,
-       0,     0,    40,     2,     3,     4,     5,     0,     6,     7,
-       8,     9,    10,    59,    12,     0,    13,     0,    14,     0,
-       0,     0,    15,     0,    16,    17,    18,     0,     0,     0,
-       0,     0,     0,     0,    20,    21,    22,     0,     0,    23,
-       0,     0,     0,     0,     0,    26,    27,     0,    28,     0,
-       0,     0,     0,     0,     0,     0,     0,    29,     0,     0,
-       0,     0,     0,     0,    30,    31,    32,    33,    34,     0,
-       0,     0,    36,     0,     0,    37,    38,     0,     0,     0,
-      57,    39,     0,     0,     0,    40,     2,     3,     4,     5,
-       0,     6,     7,     8,     9,    10,    59,    12,     0,    13,
-       0,    14,     0,     0,     0,    15,     0,    16,    17,    18,
-       0,     0,     0,     0,     0,     0,     0,    20,    21,    22,
-       0,     0,    23,     0,     0,     0,     0,     0,    26,    27,
-       0,    28,     0,     0,     0,     0,     0,     0,     0,     0,
-      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,     0,     0,     0,    36,     0,     0,    37,    38,
-       0,     0,     0,     0,    39,     0,     0,     0,    40,     2,
-       3,     4,     5,     0,     6,     7,     8,     9,    10,    59,
-      12,   217,    13,     0,    14,     0,     0,     0,    15,     0,
-      16,    17,   122,   123,     0,     0,     0,   124,   125,   126,
-      20,   127,    22,     0,   128,   129,   130,     0,     0,     0,
-       0,    26,    27,     0,    28,     0,   218,   131,   132,   133,
-     134,   135,     0,    29,     0,     0,   136,   137,     0,     0,
-      30,    31,    32,    33,    34,     0,     0,     0,    36,     0,
-       0,    37,    38,     2,     3,     4,     5,    39,     6,     0,
-       0,    40,     0,    59,    12,     0,    13,     0,   125,   126,
-       0,   127,     0,    77,   128,     0,     0,     0,    78,     0,
-      79,    80,    81,    82,    60,     0,    22,   131,   132,   133,
-     134,   135,     0,     0,     0,     0,   136,   137,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    29,     0,     0,
-       0,     0,     0,     0,    30,    31,    32,    33,    34,     2,
-       3,     4,     5,     0,     6,    37,    38,     0,     0,    59,
-      12,    39,    13,     0,     0,    40,     0,     0,     0,    77,
-       0,     0,     0,     0,     0,     0,    79,     0,    81,     0,
-      60,     0,    22,     0,     2,     3,     4,     5,     0,     6,
-       0,     0,     0,    97,    59,    12,     0,    13,     0,     0,
-       0,     0,     0,    29,     0,     0,     0,     0,     0,     0,
-      30,    31,    32,    33,    34,    60,     0,    22,     0,     0,
-       0,    37,    38,     0,     0,     0,     0,    39,     0,     0,
-       0,    40,     0,     0,     0,     0,     0,     0,    29,     0,
+      38,     0,     0,     0,    -6,    39,     0,     0,   166,    40,
+       2,     3,     4,     5,   167,     6,     0,     0,     0,     0,
+      59,    12,     0,    13,     0,   121,   122,     0,     0,     0,
+     123,   124,   125,     0,   126,     0,     0,   127,   128,   129,
+       0,    60,     0,    22,     0,     0,     0,     0,     0,     0,
+     130,   131,   132,   133,   134,     0,     0,     0,     0,   135,
+     136,     0,     0,     0,    29,     0,     0,     0,     0,     0,
+       0,    30,    31,    32,    33,    34,     0,     0,     0,     0,
+       0,     0,    37,    38,     0,     0,     0,     0,    68,     0,
+       0,     0,    40,     0,  -147,     2,     3,     4,     5,     0,
+       6,     7,     8,     9,    10,    11,    12,     0,    13,     0,
+      14,     0,     0,     0,    15,     0,    16,    17,    18,     0,
+       0,    19,     0,     0,     0,     0,    20,    21,    22,     0,
+       0,    23,     0,     0,     0,    24,    25,    26,    27,     0,
+      28,     0,     0,     0,     0,     0,     0,     0,     0,    29,
+       0,     0,     0,     0,     0,     0,    30,    31,    32,    33,
+      34,     0,     0,    35,    36,     0,     0,    37,    38,     0,
+       0,     0,     0,    39,     0,     0,     0,    40,     2,     3,
+       4,     5,     0,     6,     7,     8,     9,    10,    59,    12,
+       0,    13,   316,    14,     0,     0,     0,    15,     0,    16,
+      17,    18,     0,     0,     0,     0,     0,     0,     0,    20,
+      21,    22,     0,     0,    23,     0,     0,     0,     0,     0,
+      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
+       0,     0,    29,     0,     0,     0,     0,     0,     0,    30,
+      31,    32,    33,    34,     0,     0,     0,    36,     0,     0,
+      37,    38,     0,     0,     0,    57,    39,     0,     0,     0,
+      40,     2,     3,     4,     5,     0,     6,     7,     8,     9,
+      10,    59,    12,     0,    13,     0,    14,     0,     0,     0,
+      15,     0,    16,    17,    18,     0,     0,     0,     0,     0,
+       0,     0,    20,    21,    22,     0,     0,    23,     0,     0,
+       0,     0,     0,    26,    27,     0,    28,     0,     0,     0,
+       0,     0,     0,     0,     0,    29,     0,     0,     0,     0,
+       0,     0,    30,    31,    32,    33,    34,     0,     0,     0,
+      36,     0,     0,    37,    38,     0,     0,     0,    57,    39,
+       0,     0,     0,    40,     2,     3,     4,     5,     0,     6,
+       7,     8,     9,    10,    59,    12,     0,    13,     0,    14,
+       0,     0,     0,    15,     0,    16,    17,    18,     0,     0,
+       0,     0,     0,     0,     0,    20,    21,    22,     0,     0,
+      23,     0,     0,     0,     0,     0,    26,    27,     0,    28,
+       0,     0,     0,     0,     0,     0,     0,     0,    29,     0,
        0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
-       2,     3,     4,     5,     0,     6,    37,    38,     0,     0,
-      59,    12,    39,    13,     0,     0,    40,     0,     0,     0,
-       0,     0,     0,     0,     0,     2,     3,     4,     5,     0,
-       6,    60,     0,    22,     0,    59,    12,     0,    13,     0,
-       0,     0,     0,     0,     0,     0,   125,   126,     0,   127,
-       0,     0,   128,     0,    29,     0,    60,     0,    22,     0,
-       0,    30,    31,    32,    33,    34,   132,   133,   134,   135,
-       0,     0,    37,    38,   136,   137,     0,     0,    65,    29,
-       0,     0,    40,     0,     0,     0,    30,    31,    32,    33,
-      34,     0,     0,   169,     0,     0,     0,    37,    38,   170,
-       0,     0,     0,   118,     0,     0,     0,    40,     0,     0,
-     122,   123,     0,     0,     0,   124,   125,   126,     0,   127,
-       0,     0,   128,   129,   130,   171,     0,     0,     0,     0,
-       0,   172,     0,     0,     0,   131,   132,   133,   134,   135,
-       0,     0,   122,   123,   136,   137,     0,   124,   125,   126,
-       0,   127,     0,     0,   128,   129,   130,   173,     0,     0,
-       0,     0,     0,   174,     0,     0,     0,   131,   132,   133,
-     134,   135,     0,     0,   122,   123,   136,   137,     0,   124,
-     125,   126,     0,   127,     0,     0,   128,   129,   130,   248,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   131,
-     132,   133,   134,   135,     0,     0,   122,   123,   136,   137,
-       0,   124,   125,   126,     0,   127,     0,     0,   128,   129,
-     130,   249,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   131,   132,   133,   134,   135,     0,     0,   122,   123,
-     136,   137,     0,   124,   125,   126,     0,   127,     0,     0,
-     128,   129,   130,   250,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   131,   132,   133,   134,   135,     0,     0,
-     122,   123,   136,   137,     0,   124,   125,   126,     0,   127,
-       0,     0,   128,   129,   130,   251,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   131,   132,   133,   134,   135,
-       0,     0,   122,   123,   136,   137,     0,   124,   125,   126,
-       0,   127,     0,     0,   128,   129,   130,     0,     0,     0,
-       0,     0,     0,     0,   164,     0,     0,   131,   132,   133,
-     134,   135,     0,   122,   123,     0,   136,   137,   124,   125,
-     126,     0,   127,     0,     0,   128,   129,   130,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   131,   132,
-     133,   134,   135,     0,   122,   123,     0,   136,   137,   124,
-     125,   126,     0,   127,     0,     0,   128,   129,   130,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   131,
-     132,   133,   134,   135,     0,     0,     0,     0,   136,   137,
-     122,   123,  -150,     0,     0,   124,   125,   126,     0,   127,
-       0,     0,   128,   129,   130,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   131,   132,   133,   134,   135,
-       0,     0,     0,     0,   136,   137,   122,   123,  -151,     0,
-       0,   124,   125,   126,     0,   127,     0,     0,   128,   129,
-     130,     0,     0,     0,     0,     0,   175,   176,     0,     0,
-       0,   131,   132,   133,   134,   135,     0,   122,   123,     0,
-     136,   137,   124,   125,   126,     0,   127,     0,     0,   128,
-     129,   130,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   187,   131,   132,   133,   134,   135,     0,   122,   123,
-     179,   136,   137,   124,   125,   126,     0,   127,     0,     0,
-     128,   129,   130,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   131,   132,   133,   134,   135,     0,   122,
-     123,   179,   136,   137,   124,   125,   126,     0,   127,     0,
-       0,   128,   129,   130,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   187,   131,   132,   133,   134,   135,     0,
-     122,   123,     0,   136,   137,   124,   125,   126,     0,   127,
-       0,     0,   128,   129,   130,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   131,   132,   133,   134,   135,
-       0,     0,     0,     0,   136,   137
+       0,     0,     0,    36,     0,     0,    37,    38,     0,     0,
+       0,     0,    39,     0,     0,     0,    40,     2,     3,     4,
+       5,     0,     6,     7,     8,     9,    10,    59,    12,   216,
+      13,     0,    14,     0,     0,     0,    15,     0,    16,    17,
+     121,   122,     0,     0,     0,   123,   124,   125,    20,   126,
+      22,     0,   127,   128,   129,     0,     0,     0,     0,    26,
+      27,     0,    28,     0,   217,   130,   131,   132,   133,   134,
+       0,    29,     0,     0,   135,   136,     0,     0,    30,    31,
+      32,    33,    34,     0,     0,     0,    36,     0,     0,    37,
+      38,     2,     3,     4,     5,    39,     6,     0,     0,    40,
+       0,    59,    12,     0,    13,     0,   124,   125,     0,   126,
+       0,    76,   127,     0,     0,     0,    77,     0,    78,    79,
+      80,    81,    60,     0,    22,   130,   131,   132,   133,   134,
+       0,     0,     0,     0,   135,   136,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    29,     0,     0,     0,     0,
+       0,     0,    30,    31,    32,    33,    34,     2,     3,     4,
+       5,     0,     6,    37,    38,     0,     0,    59,    12,    39,
+      13,     0,     0,    40,     0,     0,     0,    76,     0,     0,
+       0,     0,     0,     0,    78,     0,    80,     0,    60,     0,
+      22,     0,     2,     3,     4,     5,     0,     6,     0,     0,
+       0,    96,    59,    12,     0,    13,     0,     0,     0,     0,
+       0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
+      32,    33,    34,    60,     0,    22,     0,     0,     0,    37,
+      38,     0,     0,     0,     0,    39,     0,     0,     0,    40,
+       0,     0,     0,     0,     0,     0,    29,     0,     0,     0,
+       0,     0,     0,    30,    31,    32,    33,    34,     2,     3,
+       4,     5,     0,     6,    37,    38,     0,     0,    59,    12,
+      39,    13,     0,     0,    40,     0,     0,     0,     0,     0,
+       0,     0,     0,     2,     3,     4,     5,     0,     6,    60,
+       0,    22,     0,    59,    12,     0,    13,     0,     0,     0,
+       0,     0,     0,     0,   124,   125,     0,   126,     0,     0,
+     127,     0,    29,     0,    60,     0,    22,     0,     0,    30,
+      31,    32,    33,    34,   131,   132,   133,   134,     0,     0,
+      37,    38,   135,   136,     0,     0,    64,    29,     0,     0,
+      40,     0,     0,     0,    30,    31,    32,    33,    34,     0,
+       0,   168,     0,     0,     0,    37,    38,   169,     0,     0,
+       0,   117,     0,     0,     0,    40,     0,     0,   121,   122,
+       0,     0,     0,   123,   124,   125,     0,   126,     0,     0,
+     127,   128,   129,   170,     0,     0,     0,     0,     0,   171,
+       0,     0,     0,   130,   131,   132,   133,   134,     0,     0,
+     121,   122,   135,   136,     0,   123,   124,   125,     0,   126,
+       0,     0,   127,   128,   129,   172,     0,     0,     0,     0,
+       0,   173,     0,     0,     0,   130,   131,   132,   133,   134,
+       0,     0,   121,   122,   135,   136,     0,   123,   124,   125,
+       0,   126,     0,     0,   127,   128,   129,   247,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   130,   131,   132,
+     133,   134,     0,     0,   121,   122,   135,   136,     0,   123,
+     124,   125,     0,   126,     0,     0,   127,   128,   129,   248,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   130,
+     131,   132,   133,   134,     0,     0,   121,   122,   135,   136,
+       0,   123,   124,   125,     0,   126,     0,     0,   127,   128,
+     129,   249,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   130,   131,   132,   133,   134,     0,     0,   121,   122,
+     135,   136,     0,   123,   124,   125,     0,   126,     0,     0,
+     127,   128,   129,   250,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   130,   131,   132,   133,   134,     0,     0,
+     121,   122,   135,   136,     0,   123,   124,   125,     0,   126,
+       0,     0,   127,   128,   129,     0,     0,     0,     0,     0,
+       0,     0,   163,     0,     0,   130,   131,   132,   133,   134,
+       0,   121,   122,     0,   135,   136,   123,   124,   125,     0,
+     126,     0,     0,   127,   128,   129,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   130,   131,   132,   133,
+     134,     0,   121,   122,     0,   135,   136,   123,   124,   125,
+       0,   126,     0,     0,   127,   128,   129,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   130,   131,   132,
+     133,   134,     0,     0,     0,     0,   135,   136,   121,   122,
+    -148,     0,     0,   123,   124,   125,     0,   126,     0,     0,
+     127,   128,   129,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   130,   131,   132,   133,   134,     0,     0,
+       0,     0,   135,   136,   121,   122,  -149,     0,     0,   123,
+     124,   125,     0,   126,     0,     0,   127,   128,   129,     0,
+       0,     0,     0,     0,   174,   175,     0,     0,     0,   130,
+     131,   132,   133,   134,     0,   121,   122,     0,   135,   136,
+     123,   124,   125,     0,   126,     0,     0,   127,   128,   129,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   186,
+     130,   131,   132,   133,   134,     0,   121,   122,   178,   135,
+     136,   123,   124,   125,     0,   126,     0,     0,   127,   128,
+     129,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   130,   131,   132,   133,   134,     0,   121,   122,   178,
+     135,   136,   123,   124,   125,     0,   126,     0,     0,   127,
+     128,   129,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   186,   130,   131,   132,   133,   134,     0,   121,   122,
+       0,   135,   136,   123,   124,   125,     0,   126,     0,     0,
+     127,   128,   129,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   130,   131,   132,   133,   134,     0,     0,
+       0,     0,   135,   136
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,   241,     0,     0,   116,     4,   118,     0,     7,     8,
-       9,    27,    11,     1,    46,   221,    29,     9,    17,    11,
-      25,    20,    46,    27,    94,    95,     0,    26,    27,   163,
-      29,    30,    31,    32,    33,    34,    69,    50,    37,    38,
-      39,    40,    46,   177,   262,    50,   252,   286,    40,    81,
-      49,    50,   186,    41,   289,   240,    21,    81,    91,    92,
-     299,    60,   280,   303,    43,   300,    65,    90,    84,    68,
-      69,    88,    95,    65,    73,    21,    68,    88,    77,    89,
-      79,    73,    98,    90,    95,   325,    12,    13,    95,    21,
-      88,    88,    91,   278,   279,    21,    90,    21,   283,    90,
-     285,    95,    21,    38,    95,    40,    48,    49,    21,    21,
-     295,   296,    21,    89,    81,   115,    89,   116,   117,   118,
-      95,    38,   115,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     274,   115,    95,   142,   329,    95,   145,    21,    45,   183,
-      95,   150,    21,    45,   288,   154,   155,    21,   157,   158,
-      21,   160,   161,    21,    46,   164,    21,    90,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,    35,   291,
-      90,   315,    21,   317,    95,    25,    21,    29,   187,   323,
-     302,    50,    45,    63,    64,    25,    66,    25,   186,    69,
-      57,    58,    25,    25,    45,    62,    63,    64,   115,    66,
-      67,    68,    69,    70,    71,    85,    86,   275,   217,   218,
-     254,    91,    92,   257,   258,    82,    83,    84,    85,    86,
-     299,    27,    -1,    -1,    91,    92,    -1,   236,    -1,   273,
-      -1,    -1,    -1,    -1,   236,    -1,    -1,    -1,   282,   248,
-     249,   250,   251,    -1,    -1,   289,   244,   256,    -1,   247,
-      -1,    -1,    -1,   297,   298,   299,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   272,   308,    -1,    -1,    -1,    -1,   267,
-     314,    -1,   316,    -1,    -1,    -1,    -1,    -1,     0,     1,
-      -1,    -1,   291,    -1,    -1,    -1,    -1,   331,   332,    11,
-      12,    13,    14,   302,    16,    17,    18,    19,    20,    21,
-      22,    -1,    24,    -1,    26,    -1,    -1,    -1,    30,    -1,
-      32,    33,    34,    -1,    -1,    37,    -1,   327,    -1,   329,
-      42,    43,    44,    -1,    -1,    47,    -1,    -1,    -1,    51,
-      52,    53,    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
-      72,    73,    74,    75,    76,    -1,    -1,    79,    80,    -1,
-      -1,    83,    84,    -1,    -1,    -1,    88,    89,    -1,    -1,
-      40,    93,    11,    12,    13,    14,    46,    16,    -1,    -1,
-      -1,    -1,    21,    22,    -1,    24,    -1,    57,    58,    -1,
-      -1,    -1,    62,    63,    64,    -1,    66,    -1,    -1,    69,
-      70,    71,    -1,    42,    -1,    44,    -1,    -1,    -1,    -1,
-      -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,    -1,
-      -1,    91,    92,    -1,    -1,    -1,    65,    -1,    -1,    -1,
-      -1,    -1,    -1,    72,    73,    74,    75,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
-      89,    -1,    -1,    -1,    93,    -1,    95,    11,    12,    13,
-      14,    -1,    16,    17,    18,    19,    20,    21,    22,    -1,
+       0,   240,     0,    69,   115,     4,   117,    46,     7,     8,
+       9,    27,    11,     1,    46,   220,    29,     9,    17,    11,
+      25,    20,    48,    49,    88,    91,    92,    26,    27,   162,
+      29,    30,    31,    32,    33,    34,   260,    50,    37,    38,
+      39,    40,    81,   176,    27,    50,   251,   284,    40,    81,
+      49,    50,   185,    41,   278,   239,    21,    12,    13,   287,
+     297,    60,   301,    46,    88,    64,    21,    83,    67,    68,
+     298,    95,    64,    72,    38,    67,    40,    76,    90,    78,
+      72,    97,    90,    95,   323,    94,    95,    95,    21,    90,
+      88,    90,   276,   277,    95,    90,    43,   281,    21,   283,
+      95,    21,    21,    21,    21,    21,    81,    89,    89,   293,
+     294,    89,    38,    21,   114,    95,   115,   116,   117,    95,
+      45,    95,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   272,
+      21,    95,   141,   327,    45,   144,    21,    21,   182,    21,
+     149,    90,    90,   286,   153,   154,    21,   156,   157,    46,
+     159,   160,    21,    95,   163,    25,    21,   166,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    35,   289,    29,
+     313,    50,   315,    45,    25,    25,    25,   186,   321,   300,
+      25,    45,    63,    64,   273,    66,   297,   185,    69,    57,
+      58,   114,    27,    -1,    62,    63,    64,    -1,    66,    67,
+      68,    69,    70,    71,    85,    86,    -1,   216,   217,   253,
+      91,    92,   256,   257,    82,    83,    84,    85,    86,    -1,
+      -1,    -1,    -1,    91,    92,    -1,   235,   271,    -1,    -1,
+      -1,    -1,    -1,   235,    -1,    -1,   280,    -1,   247,   248,
+     249,   250,    -1,   287,    -1,   243,   255,    -1,   246,    -1,
+      -1,   295,   296,   297,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   270,   306,    -1,    -1,    -1,    -1,   265,   312,    -1,
+     314,    -1,    -1,    -1,    -1,    -1,     0,     1,    -1,    -1,
+     289,    -1,    -1,    -1,    -1,   329,   330,    11,    12,    13,
+      14,   300,    16,    17,    18,    19,    20,    21,    22,    -1,
       24,    -1,    26,    -1,    -1,    -1,    30,    -1,    32,    33,
-      34,    -1,    -1,    37,    -1,    -1,    -1,    -1,    42,    43,
+      34,    -1,    -1,    37,    -1,   325,    -1,   327,    42,    43,
       44,    -1,    -1,    47,    -1,    -1,    -1,    51,    52,    53,
       54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
       74,    75,    76,    -1,    -1,    79,    80,    -1,    -1,    83,
-      84,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,
-      11,    12,    13,    14,    -1,    16,    17,    18,    19,    20,
-      21,    22,    -1,    24,    25,    26,    -1,    -1,    -1,    30,
-      -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    42,    43,    44,    -1,    -1,    47,    -1,    -1,    -1,
-      -1,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    73,    74,    75,    76,    -1,    -1,    -1,    80,
-      -1,    -1,    83,    84,    -1,    -1,    -1,    88,    89,    -1,
-      -1,    -1,    93,    11,    12,    13,    14,    -1,    16,    17,
-      18,    19,    20,    21,    22,    -1,    24,    -1,    26,    -1,
-      -1,    -1,    30,    -1,    32,    33,    34,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    42,    43,    44,    -1,    -1,    47,
-      -1,    -1,    -1,    -1,    -1,    53,    54,    -1,    56,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
-      -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    -1,
-      -1,    -1,    80,    -1,    -1,    83,    84,    -1,    -1,    -1,
-      88,    89,    -1,    -1,    -1,    93,    11,    12,    13,    14,
-      -1,    16,    17,    18,    19,    20,    21,    22,    -1,    24,
-      -1,    26,    -1,    -1,    -1,    30,    -1,    32,    33,    34,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    44,
-      -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    53,    54,
-      -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
-      75,    76,    -1,    -1,    -1,    80,    -1,    -1,    83,    84,
-      -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    11,
-      12,    13,    14,    -1,    16,    17,    18,    19,    20,    21,
-      22,    46,    24,    -1,    26,    -1,    -1,    -1,    30,    -1,
-      32,    33,    57,    58,    -1,    -1,    -1,    62,    63,    64,
-      42,    66,    44,    -1,    69,    70,    71,    -1,    -1,    -1,
-      -1,    53,    54,    -1,    56,    -1,    81,    82,    83,    84,
-      85,    86,    -1,    65,    -1,    -1,    91,    92,    -1,    -1,
-      72,    73,    74,    75,    76,    -1,    -1,    -1,    80,    -1,
-      -1,    83,    84,    11,    12,    13,    14,    89,    16,    -1,
-      -1,    93,    -1,    21,    22,    -1,    24,    -1,    63,    64,
-      -1,    66,    -1,    31,    69,    -1,    -1,    -1,    36,    -1,
-      38,    39,    40,    41,    42,    -1,    44,    82,    83,    84,
-      85,    86,    -1,    -1,    -1,    -1,    91,    92,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
-      -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    11,
-      12,    13,    14,    -1,    16,    83,    84,    -1,    -1,    21,
-      22,    89,    24,    -1,    -1,    93,    -1,    -1,    -1,    31,
-      -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    40,    -1,
-      42,    -1,    44,    -1,    11,    12,    13,    14,    -1,    16,
-      -1,    -1,    -1,    55,    21,    22,    -1,    24,    -1,    -1,
-      -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
-      72,    73,    74,    75,    76,    42,    -1,    44,    -1,    -1,
-      -1,    83,    84,    -1,    -1,    -1,    -1,    89,    -1,    -1,
-      -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
+      84,    -1,    -1,    -1,    88,    89,    -1,    -1,    40,    93,
+      11,    12,    13,    14,    46,    16,    -1,    -1,    -1,    -1,
+      21,    22,    -1,    24,    -1,    57,    58,    -1,    -1,    -1,
+      62,    63,    64,    -1,    66,    -1,    -1,    69,    70,    71,
+      -1,    42,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,
+      82,    83,    84,    85,    86,    -1,    -1,    -1,    -1,    91,
+      92,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+      -1,    72,    73,    74,    75,    76,    -1,    -1,    -1,    -1,
+      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    89,    -1,
+      -1,    -1,    93,    -1,    95,    11,    12,    13,    14,    -1,
+      16,    17,    18,    19,    20,    21,    22,    -1,    24,    -1,
+      26,    -1,    -1,    -1,    30,    -1,    32,    33,    34,    -1,
+      -1,    37,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,
+      -1,    47,    -1,    -1,    -1,    51,    52,    53,    54,    -1,
+      56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
+      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,
+      76,    -1,    -1,    79,    80,    -1,    -1,    83,    84,    -1,
+      -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    11,    12,
+      13,    14,    -1,    16,    17,    18,    19,    20,    21,    22,
+      -1,    24,    25,    26,    -1,    -1,    -1,    30,    -1,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
+      43,    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,
+      53,    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+      73,    74,    75,    76,    -1,    -1,    -1,    80,    -1,    -1,
+      83,    84,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,
+      93,    11,    12,    13,    14,    -1,    16,    17,    18,    19,
+      20,    21,    22,    -1,    24,    -1,    26,    -1,    -1,    -1,
+      30,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    42,    43,    44,    -1,    -1,    47,    -1,    -1,
+      -1,    -1,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
+      -1,    -1,    72,    73,    74,    75,    76,    -1,    -1,    -1,
+      80,    -1,    -1,    83,    84,    -1,    -1,    -1,    88,    89,
+      -1,    -1,    -1,    93,    11,    12,    13,    14,    -1,    16,
+      17,    18,    19,    20,    21,    22,    -1,    24,    -1,    26,
+      -1,    -1,    -1,    30,    -1,    32,    33,    34,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,    -1,
+      47,    -1,    -1,    -1,    -1,    -1,    53,    54,    -1,    56,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
       -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,
-      11,    12,    13,    14,    -1,    16,    83,    84,    -1,    -1,
-      21,    22,    89,    24,    -1,    -1,    93,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    11,    12,    13,    14,    -1,
-      16,    42,    -1,    44,    -1,    21,    22,    -1,    24,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    63,    64,    -1,    66,
-      -1,    -1,    69,    -1,    65,    -1,    42,    -1,    44,    -1,
-      -1,    72,    73,    74,    75,    76,    83,    84,    85,    86,
-      -1,    -1,    83,    84,    91,    92,    -1,    -1,    89,    65,
-      -1,    -1,    93,    -1,    -1,    -1,    72,    73,    74,    75,
-      76,    -1,    -1,    40,    -1,    -1,    -1,    83,    84,    46,
-      -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    -1,    -1,
-      57,    58,    -1,    -1,    -1,    62,    63,    64,    -1,    66,
+      -1,    -1,    -1,    80,    -1,    -1,    83,    84,    -1,    -1,
+      -1,    -1,    89,    -1,    -1,    -1,    93,    11,    12,    13,
+      14,    -1,    16,    17,    18,    19,    20,    21,    22,    46,
+      24,    -1,    26,    -1,    -1,    -1,    30,    -1,    32,    33,
+      57,    58,    -1,    -1,    -1,    62,    63,    64,    42,    66,
+      44,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    53,
+      54,    -1,    56,    -1,    81,    82,    83,    84,    85,    86,
+      -1,    65,    -1,    -1,    91,    92,    -1,    -1,    72,    73,
+      74,    75,    76,    -1,    -1,    -1,    80,    -1,    -1,    83,
+      84,    11,    12,    13,    14,    89,    16,    -1,    -1,    93,
+      -1,    21,    22,    -1,    24,    -1,    63,    64,    -1,    66,
+      -1,    31,    69,    -1,    -1,    -1,    36,    -1,    38,    39,
+      40,    41,    42,    -1,    44,    82,    83,    84,    85,    86,
+      -1,    -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
+      -1,    -1,    72,    73,    74,    75,    76,    11,    12,    13,
+      14,    -1,    16,    83,    84,    -1,    -1,    21,    22,    89,
+      24,    -1,    -1,    93,    -1,    -1,    -1,    31,    -1,    -1,
+      -1,    -1,    -1,    -1,    38,    -1,    40,    -1,    42,    -1,
+      44,    -1,    11,    12,    13,    14,    -1,    16,    -1,    -1,
+      -1,    55,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,
+      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
+      74,    75,    76,    42,    -1,    44,    -1,    -1,    -1,    83,
+      84,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,
+      -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
+      -1,    -1,    -1,    72,    73,    74,    75,    76,    11,    12,
+      13,    14,    -1,    16,    83,    84,    -1,    -1,    21,    22,
+      89,    24,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    11,    12,    13,    14,    -1,    16,    42,
+      -1,    44,    -1,    21,    22,    -1,    24,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    63,    64,    -1,    66,    -1,    -1,
+      69,    -1,    65,    -1,    42,    -1,    44,    -1,    -1,    72,
+      73,    74,    75,    76,    83,    84,    85,    86,    -1,    -1,
+      83,    84,    91,    92,    -1,    -1,    89,    65,    -1,    -1,
+      93,    -1,    -1,    -1,    72,    73,    74,    75,    76,    -1,
+      -1,    40,    -1,    -1,    -1,    83,    84,    46,    -1,    -1,
+      -1,    89,    -1,    -1,    -1,    93,    -1,    -1,    57,    58,
+      -1,    -1,    -1,    62,    63,    64,    -1,    66,    -1,    -1,
+      69,    70,    71,    40,    -1,    -1,    -1,    -1,    -1,    46,
+      -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
+      57,    58,    91,    92,    -1,    62,    63,    64,    -1,    66,
       -1,    -1,    69,    70,    71,    40,    -1,    -1,    -1,    -1,
       -1,    46,    -1,    -1,    -1,    82,    83,    84,    85,    86,
       -1,    -1,    57,    58,    91,    92,    -1,    62,    63,    64,
       -1,    66,    -1,    -1,    69,    70,    71,    40,    -1,    -1,
-      -1,    -1,    -1,    46,    -1,    -1,    -1,    82,    83,    84,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,
       85,    86,    -1,    -1,    57,    58,    91,    92,    -1,    62,
       63,    64,    -1,    66,    -1,    -1,    69,    70,    71,    40,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
@@ -1184,38 +1187,35 @@ static const yytype_int16 yycheck[] =
       69,    70,    71,    40,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
       57,    58,    91,    92,    -1,    62,    63,    64,    -1,    66,
-      -1,    -1,    69,    70,    71,    40,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,
-      -1,    -1,    57,    58,    91,    92,    -1,    62,    63,    64,
+      -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    48,    -1,    -1,    82,    83,    84,    85,    86,
+      -1,    57,    58,    -1,    91,    92,    62,    63,    64,    -1,
+      66,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,
+      86,    -1,    57,    58,    -1,    91,    92,    62,    63,    64,
       -1,    66,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    48,    -1,    -1,    82,    83,    84,
-      85,    86,    -1,    57,    58,    -1,    91,    92,    62,    63,
-      64,    -1,    66,    -1,    -1,    69,    70,    71,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,
-      84,    85,    86,    -1,    57,    58,    -1,    91,    92,    62,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,
+      85,    86,    -1,    -1,    -1,    -1,    91,    92,    57,    58,
+      95,    -1,    -1,    62,    63,    64,    -1,    66,    -1,    -1,
+      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
+      -1,    -1,    91,    92,    57,    58,    95,    -1,    -1,    62,
       63,    64,    -1,    66,    -1,    -1,    69,    70,    71,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      83,    84,    85,    86,    -1,    -1,    -1,    -1,    91,    92,
-      57,    58,    95,    -1,    -1,    62,    63,    64,    -1,    66,
-      -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,
-      -1,    -1,    -1,    -1,    91,    92,    57,    58,    95,    -1,
-      -1,    62,    63,    64,    -1,    66,    -1,    -1,    69,    70,
-      71,    -1,    -1,    -1,    -1,    -1,    77,    78,    -1,    -1,
-      -1,    82,    83,    84,    85,    86,    -1,    57,    58,    -1,
+      -1,    -1,    -1,    -1,    77,    78,    -1,    -1,    -1,    82,
+      83,    84,    85,    86,    -1,    57,    58,    -1,    91,    92,
+      62,    63,    64,    -1,    66,    -1,    -1,    69,    70,    71,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,
+      82,    83,    84,    85,    86,    -1,    57,    58,    90,    91,
+      92,    62,    63,    64,    -1,    66,    -1,    -1,    69,    70,
+      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    82,    83,    84,    85,    86,    -1,    57,    58,    90,
       91,    92,    62,    63,    64,    -1,    66,    -1,    -1,    69,
       70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    81,    82,    83,    84,    85,    86,    -1,    57,    58,
-      90,    91,    92,    62,    63,    64,    -1,    66,    -1,    -1,
+      -1,    91,    92,    62,    63,    64,    -1,    66,    -1,    -1,
       69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    57,
-      58,    90,    91,    92,    62,    63,    64,    -1,    66,    -1,
-      -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    81,    82,    83,    84,    85,    86,    -1,
-      57,    58,    -1,    91,    92,    62,    63,    64,    -1,    66,
-      -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,
-      -1,    -1,    -1,    -1,    91,    92
+      -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
+      -1,    -1,    91,    92
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1228,34 +1228,34 @@ static const yytype_uint8 yystos[] =
       72,    73,    74,    75,    76,    79,    80,    83,    84,    89,
       93,    97,    99,   100,   101,   102,   103,   110,   111,   112,
      117,   118,   119,   122,   125,   127,   134,    88,    98,    21,
-      42,   100,   118,   118,   118,    89,   118,   135,    21,    89,
-     118,   135,   136,   126,    43,    21,   120,    31,    36,    38,
-      39,    40,    41,   118,   123,   124,    21,   118,    48,    49,
-      12,    13,    21,    21,    21,    21,   118,    55,   123,   124,
-      21,   121,   118,   118,   118,   118,   118,   118,    21,    89,
-     118,   118,   118,   135,     0,    98,    89,    81,    89,   109,
-     118,   118,    57,    58,    62,    63,    64,    66,    69,    70,
-      71,    82,    83,    84,    85,    86,    91,    92,    89,   118,
-     118,   135,    95,   135,   135,    95,   135,    95,   118,   118,
-      38,   124,   128,    35,    67,    68,    21,    46,    81,   118,
-      46,    81,    45,   129,    48,   124,    95,    40,    46,    40,
-      46,    40,    46,    40,    46,    77,    78,   130,    21,    90,
-      94,    99,   109,   118,   109,   118,    45,    81,   115,   118,
+      42,   118,   118,   118,    89,   118,   135,    21,    89,   118,
+     135,   136,   126,    43,    21,   120,    31,    36,    38,    39,
+      40,    41,   118,   123,   124,    21,   118,    48,    49,    12,
+      13,    21,    21,    21,    21,   118,    55,   123,   124,    21,
+     121,   118,   118,   118,   118,   118,   118,    21,    89,   118,
+     118,   118,   135,     0,    98,    89,    81,    89,   109,   118,
+     118,    57,    58,    62,    63,    64,    66,    69,    70,    71,
+      82,    83,    84,    85,    86,    91,    92,    89,   118,   118,
+     135,    95,   135,   135,    95,   135,    95,   118,   118,    38,
+     124,   128,    35,    67,    68,    21,    46,    81,   118,    46,
+      81,    45,   129,    48,   124,    95,    40,    46,    40,    46,
+      40,    46,    40,    46,    77,    78,   130,    21,    90,    94,
+      99,   109,   118,   109,   118,    45,    81,   115,   118,   118,
      118,   118,   118,   118,   118,   118,   118,   118,   118,   118,
-     118,   118,   118,   118,   118,    90,   118,    90,   118,    21,
-     118,   114,    21,   118,   118,   118,   118,    46,    81,   118,
-     118,   114,   118,    21,   118,   118,   118,   118,   118,   118,
-     118,   118,   118,   118,   114,    90,    95,    90,   115,    90,
-      98,   114,   118,    21,   132,   118,   118,   132,    40,    40,
-      40,    40,   131,   135,   116,    27,    46,   116,   101,   119,
-      95,    98,    98,   118,   118,   118,   118,   132,    90,    98,
-     102,   115,    46,   118,   115,   115,    21,    95,   133,   133,
-      98,    25,   118,   115,    25,    50,   114,    29,    50,   106,
-     107,   113,    21,   116,   116,   133,   115,   116,   116,   105,
-     106,   108,   113,   114,   107,   115,   109,   116,   116,   115,
-     115,   108,   115,   109,   101,    50,   104,    45,    25,   115,
-      25,    25,    25,    45,   115,   114,   115,   114,    25,   114,
-     101,   102,   116,   115,   115
+     118,   118,   118,   118,    90,   118,    90,   118,    21,   118,
+     114,    21,   118,   118,   118,   118,    46,    81,   118,   118,
+     114,   118,    21,   118,   118,   118,   118,   118,   118,   118,
+     118,   118,   118,   114,    90,    95,    90,   115,    90,    98,
+     114,   118,    21,   132,   118,   118,   132,    40,    40,    40,
+      40,   131,   135,   116,    27,    46,   116,   101,    95,    98,
+      98,   118,   118,   118,   118,   132,    90,    98,   102,   115,
+      46,   118,   115,   115,    21,    95,   133,   133,    98,    25,
+     118,   115,    25,    50,   114,    29,    50,   106,   107,   113,
+      21,   116,   116,   133,   115,   116,   116,   105,   106,   108,
+     113,   114,   107,   115,   109,   116,   116,   115,   115,   108,
+     115,   109,   101,    50,   104,    45,    25,   115,    25,    25,
+      25,    45,   115,   114,   115,   114,    25,   114,   101,   102,
+     116,   115,   115
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2083,12 +2083,7 @@ yyreduce:
     break;
 
   case 10:
-#line 131 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_xpop); ;}
-    break;
-
-  case 12:
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 133 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str());
@@ -2097,18 +2092,18 @@ yyreduce:
 		delete (yyvsp[(4) - (4)].s); ;}
     break;
 
-  case 13:
-#line 141 "engines/director/lingo/lingo-gr.y"
+  case 11:
+#line 139 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_after); ;}
     break;
 
-  case 14:
-#line 142 "engines/director/lingo/lingo-gr.y"
+  case 12:
+#line 140 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_before); ;}
     break;
 
-  case 15:
-#line 143 "engines/director/lingo/lingo-gr.y"
+  case 13:
+#line 141 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2117,8 +2112,8 @@ yyreduce:
 		delete (yyvsp[(2) - (4)].s); ;}
     break;
 
-  case 16:
-#line 149 "engines/director/lingo/lingo-gr.y"
+  case 14:
+#line 147 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2129,8 +2124,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(4) - (4)].code); ;}
     break;
 
-  case 17:
-#line 157 "engines/director/lingo/lingo-gr.y"
+  case 15:
+#line 155 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2141,8 +2136,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(5) - (5)].code); ;}
     break;
 
-  case 18:
-#line 165 "engines/director/lingo/lingo-gr.y"
+  case 16:
+#line 163 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2151,8 +2146,8 @@ yyreduce:
 		delete (yyvsp[(2) - (4)].s); ;}
     break;
 
-  case 19:
-#line 171 "engines/director/lingo/lingo-gr.y"
+  case 17:
+#line 169 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2163,8 +2158,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(4) - (4)].code); ;}
     break;
 
-  case 20:
-#line 179 "engines/director/lingo/lingo-gr.y"
+  case 18:
+#line 177 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2175,13 +2170,13 @@ yyreduce:
 		(yyval.code) = (yyvsp[(5) - (5)].code); ;}
     break;
 
-  case 21:
-#line 188 "engines/director/lingo/lingo-gr.y"
+  case 19:
+#line 186 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_xpop); ;}
     break;
 
-  case 25:
-#line 197 "engines/director/lingo/lingo-gr.y"
+  case 23:
+#line 195 "engines/director/lingo/lingo-gr.y"
     {
 		inst body = 0, end = 0;
 		WRITE_UINT32(&body, (yyvsp[(5) - (7)].code));
@@ -2192,8 +2187,8 @@ yyreduce:
 		checkEnd((yyvsp[(7) - (7)].s), "repeat", true); ;}
     break;
 
-  case 26:
-#line 210 "engines/director/lingo/lingo-gr.y"
+  case 24:
+#line 208 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (10)].code));
@@ -2210,8 +2205,8 @@ yyreduce:
 		checkEnd((yyvsp[(10) - (10)].s), "repeat", true); ;}
     break;
 
-  case 27:
-#line 228 "engines/director/lingo/lingo-gr.y"
+  case 25:
+#line 226 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (11)].code));
@@ -2228,8 +2223,8 @@ yyreduce:
 		checkEnd((yyvsp[(11) - (11)].s), "repeat", true); ;}
     break;
 
-  case 28:
-#line 242 "engines/director/lingo/lingo-gr.y"
+  case 26:
+#line 240 "engines/director/lingo/lingo-gr.y"
     {
 			inst end = 0;
 			WRITE_UINT32(&end, (yyvsp[(3) - (3)].code));
@@ -2238,8 +2233,8 @@ yyreduce:
 		;}
     break;
 
-  case 29:
-#line 250 "engines/director/lingo/lingo-gr.y"
+  case 27:
+#line 248 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (7)].code));
@@ -2252,8 +2247,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 30:
-#line 260 "engines/director/lingo/lingo-gr.y"
+  case 28:
+#line 258 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (10)].code));
@@ -2268,8 +2263,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 31:
-#line 272 "engines/director/lingo/lingo-gr.y"
+  case 29:
+#line 270 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (10)].code));
@@ -2284,8 +2279,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(9) - (10)].code)); ;}
     break;
 
-  case 32:
-#line 284 "engines/director/lingo/lingo-gr.y"
+  case 30:
+#line 282 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code));
@@ -2298,8 +2293,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 33:
-#line 294 "engines/director/lingo/lingo-gr.y"
+  case 31:
+#line 292 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code));
@@ -2312,8 +2307,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 34:
-#line 304 "engines/director/lingo/lingo-gr.y"
+  case 32:
+#line 302 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code));
@@ -2326,18 +2321,18 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(10) - (10)].code)); ;}
     break;
 
-  case 35:
-#line 315 "engines/director/lingo/lingo-gr.y"
+  case 33:
+#line 313 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = 0; ;}
     break;
 
-  case 36:
-#line 316 "engines/director/lingo/lingo-gr.y"
+  case 34:
+#line 314 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 41:
-#line 327 "engines/director/lingo/lingo-gr.y"
+  case 39:
+#line 325 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code));
@@ -2346,8 +2341,8 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 43:
-#line 336 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 334 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code));
@@ -2356,23 +2351,23 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 44:
-#line 344 "engines/director/lingo/lingo-gr.y"
+  case 42:
+#line 342 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); ;}
     break;
 
-  case 45:
-#line 345 "engines/director/lingo/lingo-gr.y"
+  case 43:
+#line 343 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_eq, STOP); ;}
     break;
 
-  case 47:
-#line 348 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 346 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
-  case 48:
-#line 350 "engines/director/lingo/lingo-gr.y"
+  case 46:
+#line 348 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2380,8 +2375,8 @@ yyreduce:
 		delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 49:
-#line 356 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 354 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2389,8 +2384,8 @@ yyreduce:
 		g_lingo->codeLabel(0); ;}
     break;
 
-  case 50:
-#line 362 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 360 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2399,23 +2394,23 @@ yyreduce:
 		g_lingo->code1(skipEnd); ;}
     break;
 
-  case 51:
-#line 369 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 367 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 52:
-#line 371 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 369 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 53:
-#line 373 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 371 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 56:
-#line 378 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 376 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
@@ -2423,56 +2418,56 @@ yyreduce:
 		delete (yyvsp[(2) - (3)].s); ;}
     break;
 
-  case 57:
-#line 384 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 382 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->codeConst((yyvsp[(1) - (1)].i)); ;}
     break;
 
-  case 58:
-#line 385 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 383 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_fconstpush);
 		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
-  case 59:
-#line 388 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 386 "engines/director/lingo/lingo-gr.y"
     {											// D3
 		(yyval.code) = g_lingo->code1(g_lingo->c_symbolpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
-  case 60:
-#line 391 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 389 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_stringpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
-  case 61:
-#line 394 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 392 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (1)].s)]->u.func);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 62:
-#line 397 "engines/director/lingo/lingo-gr.y"
+  case 60:
+#line 395 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg));
 		delete (yyvsp[(1) - (4)].s); ;}
     break;
 
-  case 63:
-#line 400 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 398 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_eval);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str());
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 64:
-#line 404 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 402 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeConst(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentitypush);
@@ -2482,8 +2477,8 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 65:
-#line 411 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 409 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
@@ -2492,334 +2487,334 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
+  case 65:
+#line 416 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_add); ;}
+    break;
+
+  case 66:
+#line 417 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_sub); ;}
+    break;
+
   case 67:
 #line 418 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_add); ;}
+    { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
   case 68:
 #line 419 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_sub); ;}
+    { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
   case 69:
 #line 420 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_mul); ;}
+    { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
   case 70:
 #line 421 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_div); ;}
+    { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
   case 71:
 #line 422 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_mod); ;}
+    { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
   case 72:
 #line 423 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gt); ;}
+    { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
   case 73:
 #line 424 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_lt); ;}
+    { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
   case 74:
 #line 425 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_neq); ;}
+    { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
   case 75:
 #line 426 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_ge); ;}
+    { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
   case 76:
 #line 427 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_le); ;}
+    { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
   case 77:
 #line 428 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_and); ;}
+    { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
   case 78:
 #line 429 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_or); ;}
+    { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
   case 79:
 #line 430 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_not); ;}
+    { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
   case 80:
 #line 431 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_ampersand); ;}
+    { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
   case 81:
 #line 432 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_concat); ;}
+    { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
   case 82:
 #line 433 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_contains); ;}
+    { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
   case 83:
 #line 434 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_starts); ;}
+    { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
   case 84:
 #line 435 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
+    { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 85:
 #line 436 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
+    { (yyval.code) = g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
   case 86:
 #line 437 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
+    { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
   case 87:
 #line 438 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
+    { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
   case 88:
 #line 439 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_intersects); ;}
+    { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
   case 89:
 #line 440 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_within); ;}
+    { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
   case 90:
 #line 441 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_charOf); ;}
+    { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
   case 91:
 #line 442 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_charToOf); ;}
+    { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
   case 92:
 #line 443 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_itemOf); ;}
+    { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
   case 93:
 #line 444 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_itemToOf); ;}
+    { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
   case 94:
 #line 445 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_lineOf); ;}
+    { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
   case 95:
 #line 446 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_lineToOf); ;}
-    break;
-
-  case 96:
-#line 447 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_wordOf); ;}
-    break;
-
-  case 97:
-#line 448 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
-  case 98:
-#line 451 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 449 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
-  case 101:
-#line 454 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 452 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
-  case 102:
-#line 455 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 453 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeConst(0); // Push fake value on stack
 							  g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
-  case 105:
-#line 459 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 457 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 106:
-#line 462 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 460 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 107:
-#line 465 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 463 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code2(g_lingo->c_voidpush, g_lingo->_builtins[*(yyvsp[(1) - (1)].s)]->u.func);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
+  case 106:
+#line 466 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
+    break;
+
+  case 107:
+#line 467 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
+    break;
+
   case 108:
 #line 468 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
+    { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
   case 109:
 #line 469 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
+    { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
   case 110:
 #line 470 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
+    { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
   case 111:
 #line 471 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
+    { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
   case 112:
 #line 472 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_open); ;}
+    { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;}
     break;
 
   case 113:
-#line 473 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
+#line 475 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 114:
-#line 474 "engines/director/lingo/lingo-gr.y"
-    { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;}
+#line 476 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 115:
-#line 477 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
+#line 479 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 116:
-#line 478 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
+#line 480 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 117:
-#line 481 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
+#line 491 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
   case 118:
-#line 482 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
+#line 492 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
   case 119:
 #line 493 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gotoloop); ;}
+    { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
   case 120:
 #line 494 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gotonext); ;}
-    break;
-
-  case 121:
-#line 495 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gotoprevious); ;}
-    break;
-
-  case 122:
-#line 496 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 123:
-#line 499 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 497 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 124:
-#line 502 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 500 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 129:
-#line 515 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 513 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
-  case 130:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 514 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 131:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 517 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 132:
-#line 522 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 520 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 133:
-#line 525 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 523 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
-  case 134:
-#line 525 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 523 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 135:
-#line 555 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 553 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 136:
-#line 556 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 554 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeConst(0); // Push fake value on stack
 			g_lingo->code1(g_lingo->c_procret);
@@ -2827,38 +2822,38 @@ yyreduce:
 			g_lingo->_indef = false; ;}
     break;
 
-  case 137:
-#line 561 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 559 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));
 		;}
     break;
 
-  case 138:
-#line 564 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 562 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
-  case 139:
-#line 565 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 563 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_procret);
 			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory);
 			g_lingo->_indef = false; ;}
     break;
 
-  case 140:
-#line 569 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 567 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 141:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 568 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_ignoreMe = true; ;}
     break;
 
-  case 142:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 568 "engines/director/lingo/lingo-gr.y"
     {
 				g_lingo->codeConst(0); // Push fake value on stack
 				g_lingo->code1(g_lingo->c_procret);
@@ -2870,33 +2865,33 @@ yyreduce:
 			;}
     break;
 
-  case 143:
-#line 580 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 578 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 144:
-#line 581 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 579 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
-  case 145:
-#line 582 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 580 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 146:
-#line 583 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 581 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 147:
-#line 585 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 583 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
-  case 148:
-#line 589 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 587 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -2905,34 +2900,34 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 149:
-#line 597 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 595 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 150:
-#line 598 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 596 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 151:
-#line 599 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 597 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 152:
-#line 602 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 600 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 153:
-#line 603 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 601 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 2936 "engines/director/lingo/lingo-gr.cpp"
+#line 2931 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3146,6 +3141,6 @@ yyreturn:
 }
 
 
-#line 606 "engines/director/lingo/lingo-gr.y"
+#line 604 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index e2e874b..47b39e5 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -126,9 +126,7 @@ nl:	'\n' {
 
 programline: /* empty */
 	| defn
-	| func
 	| macro
-	| asgn				{ g_lingo->code1(g_lingo->c_xpop); }
 	| stmt
 	;
 


Commit: e66961e1defaf2e358742d5d310a7efe996eae69
    https://github.com/scummvm/scummvm/commit/e66961e1defaf2e358742d5d310a7efe996eae69
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-23T19:39:51+01:00

Commit Message:
JANITORIAL: Whitespace fixes

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index d3a68a2..3e01ed0 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -668,21 +668,21 @@ static const yytype_int16 yyrhs[] =
 static const yytype_uint16 yyrline[] =
 {
        0,   117,   117,   118,   119,   122,   127,   128,   129,   130,
-     133,   139,   140,   141,   147,   155,   163,   169,   177,   186,
-     187,   189,   190,   195,   208,   226,   240,   248,   258,   270,
-     282,   292,   302,   313,   314,   317,   318,   321,   322,   325,
-     333,   334,   342,   343,   344,   346,   348,   354,   360,   367,
-     369,   371,   372,   373,   376,   382,   383,   386,   389,   392,
-     395,   398,   402,   409,   415,   416,   417,   418,   419,   420,
-     421,   422,   423,   424,   425,   426,   427,   428,   429,   430,
+     133,   139,   140,   141,   147,   155,   163,   169,   177,   187,
+     188,   191,   192,   197,   210,   228,   242,   250,   260,   272,
+     284,   294,   304,   316,   317,   320,   321,   324,   325,   328,
+     336,   337,   345,   346,   347,   350,   353,   360,   367,   375,
+     378,   381,   382,   383,   386,   392,   393,   396,   399,   402,
+     405,   408,   412,   419,   425,   426,   427,   428,   429,   430,
      431,   432,   433,   434,   435,   436,   437,   438,   439,   440,
-     441,   442,   443,   444,   445,   446,   449,   450,   451,   452,
-     453,   455,   456,   457,   460,   463,   466,   467,   468,   469,
-     470,   471,   472,   475,   476,   479,   480,   491,   492,   493,
-     494,   497,   500,   505,   506,   509,   510,   513,   514,   517,
-     520,   523,   523,   553,   553,   559,   562,   562,   567,   568,
-     567,   578,   579,   580,   581,   583,   587,   595,   596,   597,
-     600,   601
+     441,   442,   443,   444,   445,   446,   447,   448,   449,   450,
+     451,   452,   453,   454,   455,   456,   459,   460,   461,   462,
+     463,   465,   466,   467,   470,   473,   476,   477,   478,   479,
+     480,   481,   482,   485,   486,   489,   490,   501,   502,   503,
+     504,   507,   510,   515,   516,   519,   520,   523,   524,   527,
+     530,   533,   533,   563,   563,   569,   572,   572,   577,   578,
+     577,   588,   589,   590,   591,   594,   598,   606,   607,   608,
+     611,   612
 };
 #endif
 
@@ -2171,12 +2171,12 @@ yyreduce:
     break;
 
   case 19:
-#line 186 "engines/director/lingo/lingo-gr.y"
+#line 187 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_xpop); ;}
     break;
 
   case 23:
-#line 195 "engines/director/lingo/lingo-gr.y"
+#line 197 "engines/director/lingo/lingo-gr.y"
     {
 		inst body = 0, end = 0;
 		WRITE_UINT32(&body, (yyvsp[(5) - (7)].code));
@@ -2188,7 +2188,7 @@ yyreduce:
     break;
 
   case 24:
-#line 208 "engines/director/lingo/lingo-gr.y"
+#line 210 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (10)].code));
@@ -2206,7 +2206,7 @@ yyreduce:
     break;
 
   case 25:
-#line 226 "engines/director/lingo/lingo-gr.y"
+#line 228 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (11)].code));
@@ -2224,7 +2224,7 @@ yyreduce:
     break;
 
   case 26:
-#line 240 "engines/director/lingo/lingo-gr.y"
+#line 242 "engines/director/lingo/lingo-gr.y"
     {
 			inst end = 0;
 			WRITE_UINT32(&end, (yyvsp[(3) - (3)].code));
@@ -2234,7 +2234,7 @@ yyreduce:
     break;
 
   case 27:
-#line 248 "engines/director/lingo/lingo-gr.y"
+#line 250 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (7)].code));
@@ -2248,7 +2248,7 @@ yyreduce:
     break;
 
   case 28:
-#line 258 "engines/director/lingo/lingo-gr.y"
+#line 260 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (10)].code));
@@ -2264,7 +2264,7 @@ yyreduce:
     break;
 
   case 29:
-#line 270 "engines/director/lingo/lingo-gr.y"
+#line 272 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (10)].code));
@@ -2280,7 +2280,7 @@ yyreduce:
     break;
 
   case 30:
-#line 282 "engines/director/lingo/lingo-gr.y"
+#line 284 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code));
@@ -2294,7 +2294,7 @@ yyreduce:
     break;
 
   case 31:
-#line 292 "engines/director/lingo/lingo-gr.y"
+#line 294 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code));
@@ -2308,7 +2308,7 @@ yyreduce:
     break;
 
   case 32:
-#line 302 "engines/director/lingo/lingo-gr.y"
+#line 304 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code));
@@ -2322,17 +2322,17 @@ yyreduce:
     break;
 
   case 33:
-#line 313 "engines/director/lingo/lingo-gr.y"
+#line 316 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = 0; ;}
     break;
 
   case 34:
-#line 314 "engines/director/lingo/lingo-gr.y"
+#line 317 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 39:
-#line 325 "engines/director/lingo/lingo-gr.y"
+#line 328 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code));
@@ -2342,7 +2342,7 @@ yyreduce:
     break;
 
   case 41:
-#line 334 "engines/director/lingo/lingo-gr.y"
+#line 337 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code));
@@ -2352,22 +2352,22 @@ yyreduce:
     break;
 
   case 42:
-#line 342 "engines/director/lingo/lingo-gr.y"
+#line 345 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); ;}
     break;
 
   case 43:
-#line 343 "engines/director/lingo/lingo-gr.y"
+#line 346 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_eq, STOP); ;}
     break;
 
   case 45:
-#line 346 "engines/director/lingo/lingo-gr.y"
+#line 350 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
   case 46:
-#line 348 "engines/director/lingo/lingo-gr.y"
+#line 353 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2376,7 +2376,7 @@ yyreduce:
     break;
 
   case 47:
-#line 354 "engines/director/lingo/lingo-gr.y"
+#line 360 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2385,7 +2385,7 @@ yyreduce:
     break;
 
   case 48:
-#line 360 "engines/director/lingo/lingo-gr.y"
+#line 367 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2395,22 +2395,22 @@ yyreduce:
     break;
 
   case 49:
-#line 367 "engines/director/lingo/lingo-gr.y"
+#line 375 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 50:
-#line 369 "engines/director/lingo/lingo-gr.y"
+#line 378 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 51:
-#line 371 "engines/director/lingo/lingo-gr.y"
+#line 381 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 54:
-#line 376 "engines/director/lingo/lingo-gr.y"
+#line 386 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
@@ -2419,47 +2419,47 @@ yyreduce:
     break;
 
   case 55:
-#line 382 "engines/director/lingo/lingo-gr.y"
+#line 392 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->codeConst((yyvsp[(1) - (1)].i)); ;}
     break;
 
   case 56:
-#line 383 "engines/director/lingo/lingo-gr.y"
+#line 393 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_fconstpush);
 		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
   case 57:
-#line 386 "engines/director/lingo/lingo-gr.y"
+#line 396 "engines/director/lingo/lingo-gr.y"
     {											// D3
 		(yyval.code) = g_lingo->code1(g_lingo->c_symbolpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
   case 58:
-#line 389 "engines/director/lingo/lingo-gr.y"
+#line 399 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_stringpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
   case 59:
-#line 392 "engines/director/lingo/lingo-gr.y"
+#line 402 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (1)].s)]->u.func);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 60:
-#line 395 "engines/director/lingo/lingo-gr.y"
+#line 405 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg));
 		delete (yyvsp[(1) - (4)].s); ;}
     break;
 
   case 61:
-#line 398 "engines/director/lingo/lingo-gr.y"
+#line 408 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_eval);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str());
@@ -2467,7 +2467,7 @@ yyreduce:
     break;
 
   case 62:
-#line 402 "engines/director/lingo/lingo-gr.y"
+#line 412 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeConst(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentitypush);
@@ -2478,7 +2478,7 @@ yyreduce:
     break;
 
   case 63:
-#line 409 "engines/director/lingo/lingo-gr.y"
+#line 419 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
@@ -2488,333 +2488,333 @@ yyreduce:
     break;
 
   case 65:
-#line 416 "engines/director/lingo/lingo-gr.y"
+#line 426 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_add); ;}
     break;
 
   case 66:
-#line 417 "engines/director/lingo/lingo-gr.y"
+#line 427 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_sub); ;}
     break;
 
   case 67:
-#line 418 "engines/director/lingo/lingo-gr.y"
+#line 428 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
   case 68:
-#line 419 "engines/director/lingo/lingo-gr.y"
+#line 429 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
   case 69:
-#line 420 "engines/director/lingo/lingo-gr.y"
+#line 430 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
   case 70:
-#line 421 "engines/director/lingo/lingo-gr.y"
+#line 431 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
   case 71:
-#line 422 "engines/director/lingo/lingo-gr.y"
+#line 432 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
   case 72:
-#line 423 "engines/director/lingo/lingo-gr.y"
+#line 433 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
   case 73:
-#line 424 "engines/director/lingo/lingo-gr.y"
+#line 434 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
   case 74:
-#line 425 "engines/director/lingo/lingo-gr.y"
+#line 435 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
   case 75:
-#line 426 "engines/director/lingo/lingo-gr.y"
+#line 436 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
   case 76:
-#line 427 "engines/director/lingo/lingo-gr.y"
+#line 437 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
   case 77:
-#line 428 "engines/director/lingo/lingo-gr.y"
+#line 438 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
   case 78:
-#line 429 "engines/director/lingo/lingo-gr.y"
+#line 439 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
   case 79:
-#line 430 "engines/director/lingo/lingo-gr.y"
+#line 440 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
   case 80:
-#line 431 "engines/director/lingo/lingo-gr.y"
+#line 441 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
   case 81:
-#line 432 "engines/director/lingo/lingo-gr.y"
+#line 442 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
   case 82:
-#line 433 "engines/director/lingo/lingo-gr.y"
+#line 443 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
   case 83:
-#line 434 "engines/director/lingo/lingo-gr.y"
+#line 444 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
   case 84:
-#line 435 "engines/director/lingo/lingo-gr.y"
+#line 445 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 85:
-#line 436 "engines/director/lingo/lingo-gr.y"
+#line 446 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
   case 86:
-#line 437 "engines/director/lingo/lingo-gr.y"
+#line 447 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
   case 87:
-#line 438 "engines/director/lingo/lingo-gr.y"
+#line 448 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
   case 88:
-#line 439 "engines/director/lingo/lingo-gr.y"
+#line 449 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
   case 89:
-#line 440 "engines/director/lingo/lingo-gr.y"
+#line 450 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
   case 90:
-#line 441 "engines/director/lingo/lingo-gr.y"
+#line 451 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
   case 91:
-#line 442 "engines/director/lingo/lingo-gr.y"
+#line 452 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
   case 92:
-#line 443 "engines/director/lingo/lingo-gr.y"
+#line 453 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
   case 93:
-#line 444 "engines/director/lingo/lingo-gr.y"
+#line 454 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
   case 94:
-#line 445 "engines/director/lingo/lingo-gr.y"
+#line 455 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
   case 95:
-#line 446 "engines/director/lingo/lingo-gr.y"
+#line 456 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
   case 96:
-#line 449 "engines/director/lingo/lingo-gr.y"
+#line 459 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
   case 99:
-#line 452 "engines/director/lingo/lingo-gr.y"
+#line 462 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
   case 100:
-#line 453 "engines/director/lingo/lingo-gr.y"
+#line 463 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeConst(0); // Push fake value on stack
 							  g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
   case 103:
-#line 457 "engines/director/lingo/lingo-gr.y"
+#line 467 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 104:
-#line 460 "engines/director/lingo/lingo-gr.y"
+#line 470 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 105:
-#line 463 "engines/director/lingo/lingo-gr.y"
+#line 473 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code2(g_lingo->c_voidpush, g_lingo->_builtins[*(yyvsp[(1) - (1)].s)]->u.func);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 106:
-#line 466 "engines/director/lingo/lingo-gr.y"
+#line 476 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
   case 107:
-#line 467 "engines/director/lingo/lingo-gr.y"
+#line 477 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
   case 108:
-#line 468 "engines/director/lingo/lingo-gr.y"
+#line 478 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
   case 109:
-#line 469 "engines/director/lingo/lingo-gr.y"
+#line 479 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
   case 110:
-#line 470 "engines/director/lingo/lingo-gr.y"
+#line 480 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
   case 111:
-#line 471 "engines/director/lingo/lingo-gr.y"
+#line 481 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
   case 112:
-#line 472 "engines/director/lingo/lingo-gr.y"
+#line 482 "engines/director/lingo/lingo-gr.y"
     { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;}
     break;
 
   case 113:
-#line 475 "engines/director/lingo/lingo-gr.y"
+#line 485 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 114:
-#line 476 "engines/director/lingo/lingo-gr.y"
+#line 486 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 115:
-#line 479 "engines/director/lingo/lingo-gr.y"
+#line 489 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 116:
-#line 480 "engines/director/lingo/lingo-gr.y"
+#line 490 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 117:
-#line 491 "engines/director/lingo/lingo-gr.y"
+#line 501 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
   case 118:
-#line 492 "engines/director/lingo/lingo-gr.y"
+#line 502 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
   case 119:
-#line 493 "engines/director/lingo/lingo-gr.y"
+#line 503 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
   case 120:
-#line 494 "engines/director/lingo/lingo-gr.y"
+#line 504 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
   case 121:
-#line 497 "engines/director/lingo/lingo-gr.y"
+#line 507 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
   case 122:
-#line 500 "engines/director/lingo/lingo-gr.y"
+#line 510 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
   case 127:
-#line 513 "engines/director/lingo/lingo-gr.y"
+#line 523 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
   case 128:
-#line 514 "engines/director/lingo/lingo-gr.y"
+#line 524 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
   case 129:
-#line 517 "engines/director/lingo/lingo-gr.y"
+#line 527 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
   case 130:
-#line 520 "engines/director/lingo/lingo-gr.y"
+#line 530 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
   case 131:
-#line 523 "engines/director/lingo/lingo-gr.y"
+#line 533 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
   case 132:
-#line 523 "engines/director/lingo/lingo-gr.y"
+#line 533 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
   case 133:
-#line 553 "engines/director/lingo/lingo-gr.y"
+#line 563 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
   case 134:
-#line 554 "engines/director/lingo/lingo-gr.y"
+#line 564 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeConst(0); // Push fake value on stack
 			g_lingo->code1(g_lingo->c_procret);
@@ -2823,19 +2823,19 @@ yyreduce:
     break;
 
   case 135:
-#line 559 "engines/director/lingo/lingo-gr.y"
+#line 569 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));
 		;}
     break;
 
   case 136:
-#line 562 "engines/director/lingo/lingo-gr.y"
+#line 572 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
   case 137:
-#line 563 "engines/director/lingo/lingo-gr.y"
+#line 573 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_procret);
 			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory);
@@ -2843,17 +2843,17 @@ yyreduce:
     break;
 
   case 138:
-#line 567 "engines/director/lingo/lingo-gr.y"
+#line 577 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
   case 139:
-#line 568 "engines/director/lingo/lingo-gr.y"
+#line 578 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_ignoreMe = true; ;}
     break;
 
   case 140:
-#line 568 "engines/director/lingo/lingo-gr.y"
+#line 578 "engines/director/lingo/lingo-gr.y"
     {
 				g_lingo->codeConst(0); // Push fake value on stack
 				g_lingo->code1(g_lingo->c_procret);
@@ -2866,32 +2866,32 @@ yyreduce:
     break;
 
   case 141:
-#line 578 "engines/director/lingo/lingo-gr.y"
+#line 588 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
   case 142:
-#line 579 "engines/director/lingo/lingo-gr.y"
+#line 589 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
   case 143:
-#line 580 "engines/director/lingo/lingo-gr.y"
+#line 590 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 144:
-#line 581 "engines/director/lingo/lingo-gr.y"
+#line 591 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
   case 145:
-#line 583 "engines/director/lingo/lingo-gr.y"
+#line 594 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
   case 146:
-#line 587 "engines/director/lingo/lingo-gr.y"
+#line 598 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -2901,27 +2901,27 @@ yyreduce:
     break;
 
   case 147:
-#line 595 "engines/director/lingo/lingo-gr.y"
+#line 606 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
   case 148:
-#line 596 "engines/director/lingo/lingo-gr.y"
+#line 607 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
   case 149:
-#line 597 "engines/director/lingo/lingo-gr.y"
+#line 608 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 150:
-#line 600 "engines/director/lingo/lingo-gr.y"
+#line 611 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
   case 151:
-#line 601 "engines/director/lingo/lingo-gr.y"
+#line 612 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
@@ -3141,6 +3141,6 @@ yyreturn:
 }
 
 
-#line 604 "engines/director/lingo/lingo-gr.y"
+#line 615 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 47b39e5..2f69360 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -183,9 +183,11 @@ asgn: tPUT expr tINTO ID 		{
 		g_lingo->code2(e, f);
 		$$ = $5; }
 	;
+
 stmtoneliner: expr 				{ g_lingo->code1(g_lingo->c_xpop); }
 	| func
 	;
+
 stmt: stmtoneliner
 	| ifstmt
 	// repeat while (expression = TRUE)
@@ -310,6 +312,7 @@ ifstmt:	if cond tTHEN nl stmtlist end ENDCLAUSE		{
 
 		g_lingo->processIf(0, $10); }
 	;
+
 elsestmtoneliner: /* nothing */		{ $$ = 0; }
 	| tNLELSE begin stmtoneliner	{ $$ = $2; }
 	;
@@ -343,20 +346,24 @@ cond:	   expr 				{ g_lingo->code1(STOP); }
 	| expr '=' expr				{ g_lingo->code2(g_lingo->c_eq, STOP); }
 	| '(' cond ')'
 	;
+
 repeatwhile:	tREPEAT tWHILE		{ $$ = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); }
 	;
+
 repeatwith:		tREPEAT tWITH ID	{
 		$$ = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString($3->c_str());
 		delete $3; }
 	;
+
 if:	  tIF					{
 		$$ = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(0);  // Do not skip end
 		g_lingo->codeLabel(0); } // Mark beginning of the if() statement
 	;
+
 elseif:	  tNLELSIF			{
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -364,10 +371,13 @@ elseif:	  tNLELSIF			{
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(skipEnd); }
 	;
+
 begin:	  /* nothing */		{ $$ = g_lingo->_currentScript->size(); }
 	;
+
 end:	  /* nothing */		{ g_lingo->code1(STOP); $$ = g_lingo->_currentScript->size(); }
 	;
+
 stmtlist: /* nothing */		{ $$ = g_lingo->_currentScript->size(); }
 	| stmtlist nl
 	| stmtlist stmt
@@ -580,6 +590,7 @@ argdef:  /* nothing */ 		{ $$ = 0; }
 	| argdef ',' ID			{ g_lingo->codeArg($3); $$ = $1 + 1; }
 	| argdef nl ',' ID		{ g_lingo->codeArg($4); $$ = $1 + 1; }
 	;
+
 argstore:	  /* nothing */		{ g_lingo->codeArgStore(); }
 	;
 





More information about the Scummvm-git-logs mailing list