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

sev- sev at scummvm.org
Mon Dec 2 21:01:01 UTC 2019


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

Summary:
fac37985ca DIRECTOR: LINGO: Implemented RETURN as a built-in for the moment
2c3fe26795 DIRECTOR: LINGO: Simplified grammar
d44d322eec DIRECTOR: LINGO: Resolve reduce/reduce conflicts
ede9fcf8a3 DIRECTOR: LINGO: Added special lex case for 'set value of ()'
5740a2a4b8 DIRECTOR: LINGO: Fix macro calls as part of statement lists
6060ec7fcc DIRECTOR: LINGO: Fix debug output
bbc8b177ed DIRECTOR: LINGO: Resolved grammar conflict for '=' vs tEQ
5001cb8a1a DIRECTOR: LINGO: Simplify grammar
6706410a53 DIRECTOR: LINGO: Added test for inline equality tests
2cc1c337c8 DIRECTOR: LINGO: JANITORIAL: Whitespace fixes
c8d37abd9a DIRECTOR: LINGO: Fix setting cast member values


Commit: fac37985caf98012288ca7cb734860c5413c0244
    https://github.com/scummvm/scummvm/commit/fac37985caf98012288ca7cb734860c5413c0244
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-02T20:14:54+01:00

Commit Message:
DIRECTOR: LINGO: Implemented RETURN as a built-in for the moment

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo.h


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 9f29d4c..fa7886f 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -116,6 +116,7 @@ static struct BuiltinProto {
 	{ "preLoadCast",	Lingo::b_preLoadCast,	-1,0, false },	//		D3 c
 	{ "quit",			Lingo::b_quit,			0, 0, false },	// D2 c
 	{ "restart",		Lingo::b_restart,		0, 0, false },	// D2 c
+	{ "return",			Lingo::b_return,		1, 1, false },	// D2 function
 	{ "shutDown",		Lingo::b_shutDown,		0, 0, false },	// D2 c
 	{ "startTimer",		Lingo::b_startTimer,	0, 0, false },	// D2 c
 		// when keyDown											// D2
@@ -202,7 +203,7 @@ static struct BuiltinProto {
 	{ "enter",			Lingo::b_enter,			0, 0, false },	// D2
 	{ "false",			Lingo::b_false,			0, 0, false },	// D2
 	{ "quote",			Lingo::b_quote,			0, 0, false },	// D2
-	{ "return",			Lingo::b_return,		0, 0, false },	// D2
+//	{ "return",			Lingo::b_returnconst,	0, 0, false },	// D2 // FIXME
 	{ "tab",			Lingo::b_tab,			0, 0, false },	// D2
 	{ "true",			Lingo::b_true,			0, 0, false },	// D2
 	{ "version",		Lingo::b_version,		0, 0, false },	//		D3
@@ -956,6 +957,11 @@ void Lingo::b_quit(int nargs) {
 	g_lingo->pushVoid();
 }
 
+void Lingo::b_return(int nargs) {
+	// We do not touch the top of the stack, it will be returned
+	c_procret();
+}
+
 void Lingo::b_restart(int nargs) {
 	b_quit(nargs);
 
@@ -1463,7 +1469,7 @@ void Lingo::b_quote(int nargs) {
 	g_lingo->push(Datum(new Common::String("\"")));
 }
 
-void Lingo::b_return(int nargs) {
+void Lingo::b_returnconst(int nargs) {
 	g_lingo->push(Datum(new Common::String("\r")));
 }
 
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 633f78b..443536d 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -467,6 +467,7 @@ public:
 	static void b_restart(int nargs);
 	static void b_shutDown(int nargs);
 	static void b_startTimer(int nargs);
+	static void b_return(int nargs);
 
 	static void b_closeDA(int nargs);
 	static void b_closeResFile(int nargs);
@@ -512,7 +513,7 @@ public:
 	static void b_enter(int nargs);
 	static void b_false(int nargs);
 	static void b_quote(int nargs);
-	static void b_return(int nargs);
+	static void b_returnconst(int nargs);
 	static void b_tab(int nargs);
 	static void b_true(int nargs);
 	static void b_version(int nargs);


Commit: 2c3fe267957c7494bee1c8f86ca100b4e7f6533e
    https://github.com/scummvm/scummvm/commit/2c3fe267957c7494bee1c8f86ca100b4e7f6533e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-02T20:15:28+01:00

Commit Message:
DIRECTOR: LINGO: Simplified grammar

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 5b124aa..870bebf 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -540,7 +540,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  127
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1751
+#define YYLAST   1782
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  106
@@ -604,11 +604,11 @@ static const yytype_uint8 yytranslate[] =
 static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     7,     9,    12,    14,    16,    18,    20,
-      21,    23,    25,    27,    32,    37,    42,    47,    52,    57,
-      63,    68,    73,    79,    81,    83,    85,    87,    93,   104,
-     116,   120,   127,   132,   139,   149,   159,   169,   180,   191,
-     198,   199,   203,   206,   208,   211,   213,   220,   222,   229,
-     236,   240,   241,   242,   245,   249,   251,   253,   254,   255,
+      22,    23,    25,    27,    29,    34,    39,    44,    49,    54,
+      59,    65,    70,    75,    81,    83,    85,    87,    89,    95,
+     106,   118,   122,   129,   134,   141,   151,   161,   171,   182,
+     193,   200,   201,   205,   208,   210,   213,   215,   222,   224,
+     231,   238,   241,   242,   245,   249,   251,   253,   254,   255,
      256,   259,   262,   266,   268,   270,   272,   274,   276,   278,
      280,   283,   286,   291,   296,   298,   300,   303,   305,   309,
      313,   317,   321,   325,   329,   333,   337,   341,   345,   349,
@@ -626,37 +626,37 @@ static const yytype_uint16 yyprhs[] =
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     107,     0,    -1,   107,   108,   112,    -1,   112,    -1,     1,
+     107,     0,    -1,   107,   108,   113,    -1,   113,    -1,     1,
      108,    -1,    98,    -1,    53,    -1,    58,    -1,    36,    -1,
-      -1,   145,    -1,   152,    -1,   115,    -1,    49,   134,    42,
-      28,    -1,    49,   134,    42,   135,    -1,    49,   134,    75,
-     134,    -1,    49,   134,    76,   134,    -1,    51,    28,    91,
-     134,    -1,    51,    13,    91,   134,    -1,    51,    14,   134,
-      91,   134,    -1,    51,    28,    54,   134,    -1,    51,    13,
-      54,   134,    -1,    51,    14,   134,    54,   134,    -1,   134,
-      -1,   136,    -1,   114,    -1,   116,    -1,   125,   122,   131,
-     130,    32,    -1,   126,    91,   134,   130,    54,   134,   130,
-     131,   130,    32,    -1,   126,    91,   134,   130,    34,    54,
-     134,   130,   131,   130,    32,    -1,   132,   114,   130,    -1,
-     133,   134,   108,   131,   130,    32,    -1,   133,   134,    54,
-     134,    -1,   127,   122,   109,   131,   130,    32,    -1,   127,
-     122,   109,   131,   130,   110,   131,   130,    32,    -1,   127,
-     122,   109,   131,   130,   129,   118,   130,    32,    -1,   127,
-     122,   109,   131,   130,   110,   129,   114,   130,    -1,   127,
-     122,    52,   129,   114,   130,   119,   130,   117,   130,    -1,
-     127,   122,    52,   129,   114,   130,   110,   129,   114,   130,
-      -1,   127,   122,    52,   129,   114,   130,    -1,    -1,   110,
-     129,   114,    -1,   118,   121,    -1,   121,    -1,   119,   120,
-      -1,   120,    -1,   128,   122,    52,   129,   115,   130,    -1,
-     119,    -1,   128,   122,    52,   129,   131,   130,    -1,   128,
-     122,    53,   129,   131,   130,    -1,   123,   134,   124,    -1,
+      52,    -1,    -1,   145,    -1,   152,    -1,   116,    -1,    49,
+     134,    42,    28,    -1,    49,   134,    42,   135,    -1,    49,
+     134,    75,   134,    -1,    49,   134,    76,   134,    -1,    51,
+      28,    91,   134,    -1,    51,    13,    91,   134,    -1,    51,
+      14,   134,    91,   134,    -1,    51,    28,    54,   134,    -1,
+      51,    13,    54,   134,    -1,    51,    14,   134,    54,   134,
+      -1,   134,    -1,   136,    -1,   115,    -1,   117,    -1,   125,
+     123,   131,   130,    32,    -1,   126,    91,   134,   130,    54,
+     134,   130,   131,   130,    32,    -1,   126,    91,   134,   130,
+      34,    54,   134,   130,   131,   130,    32,    -1,   132,   115,
+     130,    -1,   133,   134,   108,   131,   130,    32,    -1,   133,
+     134,    54,   134,    -1,   127,   123,   109,   131,   130,    32,
+      -1,   127,   123,   109,   131,   130,   110,   131,   130,    32,
+      -1,   127,   123,   109,   131,   130,   129,   119,   130,    32,
+      -1,   127,   123,   109,   131,   130,   110,   129,   115,   130,
+      -1,   127,   123,   112,   129,   115,   130,   120,   130,   118,
+     130,    -1,   127,   123,   112,   129,   115,   130,   110,   129,
+     115,   130,    -1,   127,   123,   112,   129,   115,   130,    -1,
+      -1,   110,   129,   115,    -1,   119,   122,    -1,   122,    -1,
+     120,   121,    -1,   121,    -1,   128,   123,   112,   129,   116,
+     130,    -1,   120,    -1,   128,   123,   112,   129,   131,   130,
+      -1,   128,   123,   109,   129,   131,   130,    -1,   124,   134,
       -1,    -1,    50,    57,    -1,    50,    56,    28,    -1,    41,
       -1,   111,    -1,    -1,    -1,    -1,   131,   108,    -1,   131,
-     115,    -1,    55,    28,    52,    -1,    87,    -1,    12,    -1,
+     116,    -1,    55,    28,   112,    -1,    87,    -1,    12,    -1,
       15,    -1,    31,    -1,    29,    -1,   135,    -1,    23,    -1,
       24,   134,    -1,    25,   154,    -1,    25,    99,   154,   100,
       -1,    28,    99,   153,   100,    -1,    28,    -1,    13,    -1,
-      14,   134,    -1,   113,    -1,   134,    93,   134,    -1,   134,
+      14,   134,    -1,   114,    -1,   134,    93,   134,    -1,   134,
       94,   134,    -1,   134,    95,   134,    -1,   134,    96,   134,
       -1,   134,    74,   134,    -1,   134,   101,   134,    -1,   134,
      102,   134,    -1,   134,    69,   134,    -1,   134,    70,   134,
@@ -697,24 +697,24 @@ static const yytype_int16 yyrhs[] =
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   121,   121,   122,   123,   126,   131,   136,   141,   146,
-     147,   148,   149,   152,   158,   161,   162,   163,   169,   176,
-     182,   188,   195,   203,   204,   207,   208,   213,   226,   244,
-     258,   263,   266,   271,   281,   293,   305,   315,   325,   335,
-     347,   348,   351,   352,   355,   356,   359,   367,   368,   374,
-     382,   385,   388,   392,   395,   402,   409,   417,   420,   423,
-     424,   425,   428,   434,   438,   441,   444,   447,   450,   451,
-     454,   457,   458,   459,   462,   466,   474,   480,   481,   482,
-     483,   484,   485,   486,   487,   488,   489,   490,   491,   492,
-     493,   494,   495,   496,   497,   498,   499,   500,   501,   502,
-     503,   504,   505,   506,   507,   508,   509,   510,   511,   512,
-     515,   520,   521,   522,   523,   524,   525,   526,   527,   528,
-     531,   534,   537,   541,   542,   543,   544,   545,   546,   547,
-     550,   551,   554,   555,   558,   559,   570,   571,   572,   573,
-     577,   581,   587,   588,   591,   592,   595,   596,   600,   604,
-     608,   608,   638,   638,   643,   644,   644,   649,   656,   662,
-     664,   665,   666,   667,   670,   671,   672,   675,   679,   687,
-     688,   689,   692,   693
+       0,   121,   121,   122,   123,   126,   133,   140,   147,   154,
+     157,   158,   159,   160,   163,   169,   172,   173,   174,   180,
+     187,   193,   199,   206,   214,   215,   218,   219,   224,   237,
+     255,   269,   274,   277,   282,   292,   304,   316,   326,   336,
+     346,   358,   359,   362,   363,   366,   367,   370,   378,   379,
+     385,   393,   396,   399,   402,   409,   416,   424,   427,   430,
+     431,   432,   435,   441,   445,   448,   451,   454,   457,   458,
+     461,   464,   465,   466,   469,   473,   481,   487,   488,   489,
+     490,   491,   492,   493,   494,   495,   496,   497,   498,   499,
+     500,   501,   502,   503,   504,   505,   506,   507,   508,   509,
+     510,   511,   512,   513,   514,   515,   516,   517,   518,   519,
+     522,   527,   528,   529,   530,   531,   532,   533,   534,   535,
+     538,   541,   544,   548,   549,   550,   551,   552,   553,   554,
+     557,   558,   561,   562,   565,   566,   577,   578,   579,   580,
+     584,   588,   594,   595,   598,   599,   602,   603,   607,   611,
+     615,   615,   645,   645,   650,   651,   651,   656,   663,   669,
+     671,   672,   673,   674,   677,   678,   679,   682,   686,   694,
+     695,   696,   699,   700
 };
 #endif
 
@@ -739,14 +739,14 @@ static const char *const yytname[] =
   "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tME", "'='",
   "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'",
   "'<'", "'['", "']'", "','", "$accept", "program", "nl", "thennl",
-  "nlelse", "nlelsif", "programline", "asgn", "stmtoneliner", "stmt",
-  "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
-  "elseifstmtoneliner1", "elseifstmt1", "cond", "begincond", "endcond",
-  "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist",
-  "when", "tell", "expr", "reference", "proc", "globallist",
-  "propertylist", "instancelist", "gotofunc", "gotoframe", "gotomovie",
-  "playfunc", "@1", "defn", "@2", "@3", "on", "argdef", "endargdef",
-  "argstore", "macro", "arglist", "nonemptyarglist", 0
+  "nlelse", "nlelsif", "then", "programline", "asgn", "stmtoneliner",
+  "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
+  "elseifstmtoneliner1", "elseifstmt1", "cond", "begincond", "repeatwhile",
+  "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "tell",
+  "expr", "reference", "proc", "globallist", "propertylist",
+  "instancelist", "gotofunc", "gotoframe", "gotomovie", "playfunc", "@1",
+  "defn", "@2", "@3", "on", "argdef", "endargdef", "argstore", "macro",
+  "arglist", "nonemptyarglist", 0
 };
 #endif
 
@@ -773,10 +773,10 @@ static const yytype_uint16 yytoknum[] =
 static const yytype_uint8 yyr1[] =
 {
        0,   106,   107,   107,   107,   108,   109,   110,   111,   112,
-     112,   112,   112,   113,   113,   113,   113,   113,   113,   113,
-     113,   113,   113,   114,   114,   115,   115,   115,   115,   115,
-     115,   115,   115,   116,   116,   116,   116,   116,   116,   116,
-     117,   117,   118,   118,   119,   119,   120,   121,   121,   121,
+     113,   113,   113,   113,   114,   114,   114,   114,   114,   114,
+     114,   114,   114,   114,   115,   115,   116,   116,   116,   116,
+     116,   116,   116,   116,   117,   117,   117,   117,   117,   117,
+     117,   118,   118,   119,   119,   120,   120,   121,   122,   122,
      122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
      131,   131,   132,   133,   134,   134,   134,   134,   134,   134,
      134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
@@ -795,12 +795,12 @@ static const yytype_uint8 yyr1[] =
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
-       0,     2,     3,     1,     2,     1,     1,     1,     1,     0,
-       1,     1,     1,     4,     4,     4,     4,     4,     4,     5,
-       4,     4,     5,     1,     1,     1,     1,     5,    10,    11,
-       3,     6,     4,     6,     9,     9,     9,    10,    10,     6,
-       0,     3,     2,     1,     2,     1,     6,     1,     6,     6,
-       3,     0,     0,     2,     3,     1,     1,     0,     0,     0,
+       0,     2,     3,     1,     2,     1,     1,     1,     1,     1,
+       0,     1,     1,     1,     4,     4,     4,     4,     4,     4,
+       5,     4,     4,     5,     1,     1,     1,     1,     5,    10,
+      11,     3,     6,     4,     6,     9,     9,     9,    10,    10,
+       6,     0,     3,     2,     1,     2,     1,     6,     1,     6,
+       6,     2,     0,     2,     3,     1,     1,     0,     0,     0,
        2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
        2,     2,     4,     4,     1,     1,     2,     1,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
@@ -825,102 +825,102 @@ static const yytype_uint8 yydefact[] =
        0,     0,    55,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    63,
        0,     0,     0,     0,     0,     0,   169,     0,     3,    77,
-      25,    12,    26,    51,     0,    51,     0,     0,    23,    68,
-      24,   112,   113,    10,    57,    11,     5,     4,    74,     0,
+      26,    13,    27,    52,     0,    52,     0,     0,    24,    68,
+      25,   112,   113,    11,    57,    12,     5,     4,    74,     0,
       76,   121,   120,     0,   172,   123,   169,    70,     0,    71,
      110,   169,   168,   169,   114,   130,   116,     0,   136,     0,
      137,     0,   138,   143,   139,   141,   152,   111,     0,    53,
        0,     0,     0,     0,   154,   155,   128,   146,   147,   149,
      134,   118,    91,     0,     0,     0,     0,     0,   132,   117,
-     159,     0,    96,    97,     0,   170,     0,     1,     9,    59,
+     159,     0,    96,    97,     0,   170,     0,     1,    10,    59,
        0,     0,     0,    58,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,   160,   169,     0,   172,     0,     0,   129,     0,
      170,     0,   151,     0,   142,   145,     0,   140,    57,     0,
-       0,     0,    54,     0,     0,     0,     0,     0,    62,    57,
-       0,   148,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    98,    99,     0,     2,    58,
-      52,    58,    57,     6,    59,    30,     0,    59,    87,    88,
-      85,    86,    89,    90,    82,    93,    94,    95,    92,    78,
-      79,    80,    81,    83,    84,   161,     0,   124,   173,    72,
-      73,   131,   144,   160,    13,    14,    15,    16,    21,    18,
-       0,     0,    20,    17,   160,   127,   135,   102,     0,   104,
-       0,   106,     0,   108,     0,   100,   101,   133,   125,   169,
-     171,    60,    61,     0,    50,     0,     0,    58,    32,    58,
-       0,   167,     0,    22,    19,     0,     0,     0,     0,     0,
-       0,    27,     0,     0,    58,    57,     0,   162,     0,    59,
-     167,   167,   103,   105,   107,   109,   126,     0,    58,    39,
-      33,     7,    57,     0,    31,   163,   158,    59,    59,    58,
-      59,     8,    57,    56,    58,    45,    51,     0,    58,    58,
-      47,    43,    51,   164,   153,   156,    59,    58,     0,    44,
-      40,     0,    58,     0,    42,     0,     0,   165,   157,    58,
-       0,    58,    57,    58,    57,    36,    34,    35,    57,    57,
-       0,     0,    28,    38,     0,    37,     0,    59,    59,   166,
-      29,    41,    58,    58,    58,    46,    48,    49
+       0,     0,    54,     0,     0,     0,     0,     0,     9,    62,
+      57,     0,   148,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    98,    99,     0,     2,
+      58,    51,    58,     6,    59,    57,    31,     0,    59,    87,
+      88,    85,    86,    89,    90,    82,    93,    94,    95,    92,
+      78,    79,    80,    81,    83,    84,   161,     0,   124,   173,
+      72,    73,   131,   144,   160,    14,    15,    16,    17,    22,
+      19,     0,     0,    21,    18,   160,   127,   135,   102,     0,
+     104,     0,   106,     0,   108,     0,   100,   101,   133,   125,
+     169,   171,    60,    61,     0,     0,    58,     0,    33,    58,
+       0,   167,     0,    23,    20,     0,     0,     0,     0,     0,
+       0,    28,     0,     0,    57,    58,     0,   162,     0,    59,
+     167,   167,   103,   105,   107,   109,   126,     0,    58,    34,
+       7,    57,     0,    40,    32,   163,   158,    59,    59,    58,
+      59,     0,    58,     8,    56,    58,    48,    46,    44,    52,
+      57,    58,    52,   164,   153,   156,    59,    58,    58,     0,
+      43,     0,    45,     0,     0,    41,     0,   165,   157,    58,
+       0,    37,    35,    36,    57,    57,    58,    57,    58,    57,
+       0,     0,    29,    59,    59,    39,     0,    38,     0,   166,
+      30,    58,    58,    58,    42,    50,    47,    49
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    47,   261,   204,   302,   313,    48,    49,    50,   262,
-      52,   343,   319,   320,   315,   321,   129,   130,   264,    53,
-      54,    55,   316,   152,   205,   199,    56,    57,    58,    59,
+      -1,    47,   262,   204,   301,   314,   179,    48,    49,    50,
+     263,    52,   348,   315,   316,   317,   318,   129,   130,    53,
+      54,    55,   322,   152,   206,   200,    56,    57,    58,    59,
       60,    86,   119,   111,    61,    94,    95,    62,    83,    63,
-     168,   179,    64,   226,   338,   289,    65,   161,    75
+     168,   180,    64,   227,   338,   289,    65,   161,    75
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -293
+#define YYPACT_NINF -288
 static const yytype_int16 yypact[] =
 {
-     358,   -74,  -293,  -293,  1015,  -293,  -293,  1015,  1015,  1055,
-      29,  -293,  1015,  1128,  1015,  1168,  -293,  -293,  -293,     5,
-      39,   901,  -293,    41,  1015,    52,    77,    43,    57,    61,
-    1015,   942,    69,  1015,  1015,  1015,  1015,  1015,  1015,  -293,
-      71,   105,    58,  1015,  1015,  1015,  1015,     4,  -293,  -293,
-    -293,  -293,  -293,  -293,    -8,  -293,   818,  1015,  1649,  -293,
-    -293,  -293,  -293,  -293,  -293,  -293,  -293,  -293,    72,  1015,
-    1649,  1649,  1649,  1015,  1649,    63,  1015,  1649,  1015,    63,
-    1649,  1015,    63,  1015,  -293,  -293,    75,  1015,  -293,  1015,
-    -293,   129,  -293,  1649,   -20,  -293,  -293,  1203,   153,  -293,
-     -44,  1015,   -38,   140,  -293,  -293,  1543,  -293,   -20,  -293,
-    -293,    89,   -51,  1237,  1271,  1305,  1339,  1577,  -293,    90,
-    -293,   169,   -51,   -51,  1611,  1649,    12,  -293,   450,  -293,
-    1015,  1015,    66,  -293,   794,  1015,  1015,  1015,  1015,  1015,
-    1015,  1015,  1015,  1015,  1015,  1015,  1015,  1015,  1015,  1015,
-    1015,  1015,   170,  1015,  1203,  1611,    -2,  1015,    94,    22,
-    1611,    53,    94,   172,  1649,  1649,  1015,  -293,  -293,   135,
-    1015,  1015,  -293,  1015,  1015,  1509,  1015,  1015,  -293,  -293,
-    1015,  -293,   173,  1015,  1015,  1015,  1015,  1015,  1015,  1015,
-    1015,  1015,  1015,   175,    54,  -293,  -293,  1015,  -293,   634,
-    1649,  1649,  -293,  -293,  -293,  -293,  1015,  -293,    19,    19,
-      19,    19,   259,   259,   -51,  1649,    19,    19,    30,   -36,
-     -36,   -51,   -51,  1649,  1649,  -293,    -4,  -293,  1649,  -293,
-    -293,  -293,  1649,   170,  -293,  -293,  1649,  1649,  1649,  1649,
-    1015,  1015,  1649,  1649,   170,  1649,  -293,  1649,  1373,  1649,
-    1407,  1649,  1441,  1649,  1475,  1649,  1649,  -293,  -293,  1015,
-    1649,  -293,  -293,   174,  -293,    27,   818,   634,  1649,   634,
-     179,   103,    -4,  1649,  1649,    -4,  1015,  1015,  1015,  1015,
-      55,  -293,   155,  1015,  -293,   -27,   180,  -293,   185,  -293,
-     103,   103,  1649,  1649,  1649,  1649,  -293,  1015,  1649,    16,
-    -293,  -293,     8,   178,  -293,  -293,   542,  -293,  -293,  1649,
-    -293,  -293,  -293,  -293,   178,  -293,  -293,   818,   634,   178,
-     178,  -293,  -293,   187,   634,   634,  -293,   634,   818,  -293,
-     158,   165,  -293,   186,  -293,   189,   114,  -293,   118,   634,
-     192,  -293,  -293,  -293,  -293,  -293,  -293,  -293,  -293,  -293,
-     191,   193,  -293,  -293,   818,  -293,   726,   726,  -293,  -293,
-    -293,  -293,  -293,   634,   634,  -293,  -293,  -293
+     355,   -71,  -288,  -288,  1012,  -288,  -288,  1012,  1012,  1052,
+      48,  -288,  1012,  1125,  1012,  1165,  -288,  -288,  -288,    16,
+      74,   898,  -288,    83,  1012,    52,    41,    92,    99,   105,
+    1012,   939,   133,  1012,  1012,  1012,  1012,  1012,  1012,  -288,
+     135,   136,    67,  1012,  1012,  1012,  1012,     5,  -288,  -288,
+    -288,  -288,  -288,  -288,    77,  -288,   815,  1012,  1646,  -288,
+    -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,    68,  1012,
+    1646,  1646,  1646,  1012,  1646,    66,  1012,  1646,  1012,    66,
+    1646,  1012,    66,  1012,  -288,  -288,    89,  1012,  -288,  1012,
+    -288,   134,  -288,  1646,    38,  -288,  -288,  1200,   153,  -288,
+     -39,  1012,   -32,   130,  -288,  -288,  1540,  -288,    38,  -288,
+    -288,    90,    76,  1234,  1268,  1302,  1336,  1574,  -288,    91,
+    -288,   170,    76,    76,  1608,  1646,    14,  -288,   447,  -288,
+    1012,  1012,    71,  -288,   791,  1012,  1012,  1012,  1012,  1012,
+    1012,  1012,  1012,  1012,  1012,  1012,  1012,  1012,  1012,  1012,
+    1012,  1012,   171,  1012,  1200,  1608,   -74,  1012,    95,   -43,
+    1608,   -35,    95,   174,  1646,  1646,  1012,  -288,  -288,   127,
+    1012,  1012,  -288,  1012,  1012,  1506,  1012,  1012,  -288,  -288,
+    -288,  1012,  -288,   176,  1012,  1012,  1012,  1012,  1012,  1012,
+    1012,  1012,  1012,  1012,   179,    -4,  -288,  -288,  1012,  -288,
+     631,  1646,  1646,  -288,  -288,  -288,  -288,  1012,  -288,    -3,
+      -3,    -3,    -3,  1680,  1680,    76,  1646,    -3,    -3,    20,
+      30,    30,    76,    76,  1646,  1646,  -288,   -38,  -288,  1646,
+    -288,  -288,  -288,  1646,   171,  -288,  -288,  1646,  1646,  1646,
+    1646,  1012,  1012,  1646,  1646,   171,  1646,  -288,  1646,  1370,
+    1646,  1404,  1646,  1438,  1646,  1472,  1646,  1646,  -288,  -288,
+    1012,  1646,  -288,  -288,   177,    27,   631,   815,  1646,   631,
+     182,   106,   -38,  1646,  1646,   -38,  1012,  1012,  1012,  1012,
+      12,  -288,   159,  1012,    -8,  -288,   183,  -288,   186,  -288,
+     106,   106,  1646,  1646,  1646,  1646,  -288,  1012,  1646,  -288,
+    -288,     8,   180,   -11,  -288,  -288,   539,  -288,  -288,  1646,
+    -288,   815,   631,  -288,  -288,   180,   180,  -288,  -288,  -288,
+    -288,   180,  -288,   191,   631,   631,  -288,   631,  -288,   189,
+    -288,   192,  -288,    71,   815,   167,   130,  -288,   121,   631,
+     195,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
+     200,   197,  -288,  -288,   723,  -288,   815,  -288,   723,  -288,
+    -288,   631,  -288,   631,  -288,  -288,  -288,  -288
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -293,  -293,    17,  -293,  -282,  -293,    98,  -293,   -55,     0,
-    -293,  -293,  -293,   -72,  -292,   -91,   -53,  -293,  -293,  -293,
-    -293,  -293,  -249,   -92,     3,   -43,  -293,  -293,    -1,    60,
-    -293,  -293,  -293,  -293,  -293,   199,   -16,  -293,  -293,  -293,
-    -293,  -293,  -293,  -171,  -293,  -113,  -293,   -37,     6
+    -288,  -288,    17,  -103,  -287,  -288,  -128,   103,  -288,   -55,
+       0,  -288,  -288,  -288,   -70,  -211,   -83,   -53,  -288,  -288,
+    -288,  -288,  -264,  -127,     1,   -46,  -288,  -288,    -1,    65,
+    -288,  -288,  -288,  -288,  -288,   204,   -21,  -288,  -288,  -288,
+    -288,  -288,  -288,  -217,  -288,  -131,  -288,   -37,     6
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -930,287 +930,301 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -60
 static const yytype_int16 yytable[] =
 {
-      51,   133,   132,    70,   127,   300,    71,    72,    74,   126,
-     173,    77,    74,    80,    74,   109,   176,   312,    67,    79,
-      93,    82,   329,    97,    66,    89,   142,    91,   329,   106,
-      93,   301,   112,   113,   114,   115,   116,   117,   141,   158,
-     -59,   142,   122,   123,   124,   125,   162,   174,   342,   -59,
-     150,   151,   311,   177,   322,    84,   134,    76,   -59,   148,
-     149,   282,   272,   -59,   128,   150,   151,    85,   154,    96,
-     322,   103,   155,   275,   301,   125,   233,   155,   167,   156,
-     160,   283,   125,   131,   159,   104,   164,   244,   165,   105,
-     100,   101,   181,   141,    66,   -59,   142,   110,   227,   118,
-     175,   270,    66,   157,   141,   102,   -59,   142,    98,    99,
-     266,   145,   146,   147,   148,   149,   196,   197,   202,   203,
-     150,   151,   229,   146,   147,   148,   149,   157,    51,   200,
-     201,   150,   151,   120,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   207,   125,   230,   258,   296,   228,   121,   197,   259,
-     197,   267,    14,   234,   269,   232,   348,   349,   157,   236,
-     237,   153,   238,   239,   166,   242,   243,   307,   308,   245,
-     163,   172,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   178,   303,   182,   193,   260,   194,   225,   197,
-     231,   246,   263,   257,   265,   268,   281,   287,   288,   297,
-     317,   284,   304,   305,   311,   337,   301,   344,   346,   359,
-     328,   347,   280,   350,   352,   360,   198,   314,   334,   235,
-     108,     0,     0,     0,     0,     0,     0,     0,     0,   273,
-     274,     0,     0,   271,     0,     0,   306,     0,     0,     0,
-     354,     0,   356,     0,     0,     0,   357,   358,   125,   318,
-       0,     0,   332,   331,   324,   325,     0,   327,     0,   336,
-     285,     0,   286,   341,     0,   292,   293,   294,   295,     0,
-       0,     0,   298,   339,     0,     0,     0,   299,     0,   290,
-       0,     0,   291,     0,     0,     0,   309,     0,     0,   361,
-       0,   310,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   326,     0,   363,   364,     0,   330,     0,     0,
-       0,   333,   335,     0,   135,   136,     0,     0,   137,   138,
-     340,     0,     0,   141,     0,   345,   142,   143,   144,     0,
-       0,     0,   351,     0,   353,     0,   355,     0,     0,     0,
-       0,   145,   146,   147,   148,   149,   362,   362,    -9,     1,
-     150,   151,     0,     0,     0,   365,   366,   367,     0,     0,
-       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
-       0,    11,    12,    13,     0,    14,    15,    16,     0,    17,
-       0,    18,     0,     0,     0,    19,     0,    20,    21,    22,
-       0,     0,    23,     0,     0,     0,     0,    24,    25,    26,
-       0,     0,     0,    27,     0,     0,     0,    28,    29,    30,
-      31,     0,    32,     0,     0,     0,     0,     0,     0,     0,
-       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
-      36,    37,    38,     0,     0,    39,    40,    41,    42,     0,
-       0,    43,    44,     0,     0,     0,    -9,    45,     0,     0,
-       0,    46,     2,     3,     4,     5,     0,     6,     7,     8,
-       9,    10,     0,    11,    12,    13,     0,    14,    15,    16,
-       0,    17,     0,    18,     0,     0,     0,    19,     0,    20,
-      21,    22,     0,     0,    23,     0,     0,     0,     0,    24,
-      25,    26,     0,     0,     0,    27,     0,     0,     0,    28,
-      29,    30,    31,     0,    32,     0,     0,     0,     0,     0,
-       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
-      34,    35,    36,    37,    38,     0,     0,    39,    40,    41,
-      42,     0,     0,    43,    44,     0,     0,     0,     0,    45,
-       0,     0,     0,    46,     2,     3,     4,     5,     0,     6,
-       7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
-      68,    16,     0,    17,   323,    18,     0,     0,     0,    19,
-       0,    20,    21,    22,     0,     0,     0,     0,     0,     0,
-       0,    24,    25,    26,     0,     0,     0,    27,     0,     0,
-       0,     0,     0,    30,    31,     0,    32,     0,     0,     0,
-       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
-       0,     0,    34,    35,    36,    37,    38,     0,     0,    39,
-      40,     0,    42,     0,     0,    43,    44,     0,     0,     0,
-      66,    45,     0,     0,     0,    46,     2,     3,     4,     5,
-       0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,    14,    68,    16,     0,    17,     0,    18,     0,     0,
-       0,    19,     0,    20,    21,    22,     0,     0,     0,     0,
-       0,     0,     0,    24,    25,    26,     0,     0,     0,    27,
-       0,     0,     0,     0,     0,    30,    31,     0,    32,     0,
-       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
-       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
-       0,    39,    40,     0,    42,     0,     0,    43,    44,     0,
-       0,     0,    66,    45,     0,     0,     0,    46,     2,     3,
-       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,    14,    68,    16,     0,    17,     0,    18,
-       0,     0,     0,    19,     0,    20,    21,    22,     0,     0,
-       0,     0,     0,     0,     0,    24,    25,    26,     0,     0,
-       0,    27,     0,     0,     0,     0,     0,    30,    31,     0,
-      32,     0,     0,     0,     0,     0,     0,     0,     0,    33,
-       0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
-      38,     0,     0,    39,    40,     0,    42,     0,     0,    43,
-      44,     0,     0,     0,     0,    45,     0,     0,     0,    46,
-       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
-       0,    11,    12,    13,     0,    14,    68,    16,   206,    17,
-       0,    18,     0,     0,     0,    19,     0,    20,    21,   135,
-     136,     0,     0,   137,   138,   139,   140,    24,   141,    26,
-       0,   142,   143,   144,     0,     0,     0,     0,     0,    30,
-      31,     0,    32,     0,     0,     0,   145,   146,   147,   148,
-     149,    33,    66,     0,     0,   150,   151,     0,    34,    35,
-      36,    37,    38,     0,     0,     0,    40,     0,    42,     0,
-       0,    43,    44,     2,     3,     4,     5,    45,     0,     0,
-       0,    46,     0,     0,    11,    12,    13,     0,    14,    68,
-      16,     0,    17,     0,     0,     0,     0,     0,     0,    87,
-       0,     0,     0,     0,    88,     0,    89,    90,    91,    92,
-      69,     0,    26,     0,     2,     3,     4,     5,     0,     0,
+      51,   133,   132,    70,   205,   127,    71,    72,    74,   126,
+     109,    77,    74,    80,    74,   173,   320,   272,    67,    79,
+      93,    82,   176,    97,   299,   313,   228,    66,   275,   106,
+      93,   157,   112,   113,   114,   115,   116,   117,   319,   158,
+     -59,   234,   122,   123,   124,   125,   162,   300,   347,   -59,
+     300,   319,   174,   245,   100,   101,   134,   230,   -59,   177,
+      66,   282,   157,   -59,   128,   231,    84,   270,   154,   102,
+     198,   141,   155,   167,   142,   125,    76,   155,   267,   156,
+     160,   283,   125,    89,   159,    91,   164,   182,   165,   145,
+     146,   147,   148,   149,   141,   -59,   259,   142,   150,   151,
+     175,   260,    85,    66,   141,   332,   -59,   142,    98,    99,
+     332,    96,   296,   146,   147,   148,   149,   198,   197,   198,
+     103,   150,   151,   178,   203,   148,   149,   104,    51,   201,
+     202,   150,   151,   105,   209,   210,   211,   212,   213,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   208,   125,   142,    14,   235,   229,   302,   266,   307,
+     308,   110,   269,   118,   120,   233,   121,   153,   131,   237,
+     238,   157,   239,   240,   311,   243,   244,   150,   151,   166,
+     246,   172,   178,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   334,   163,   183,   194,   261,   195,   226,
+     198,   264,   232,   265,   247,   345,   268,   258,   349,   281,
+     287,   288,   285,   297,   305,   304,   313,   353,   354,   337,
+     356,   342,   358,   280,   343,   300,   350,   352,   359,   360,
+     344,   199,   330,   321,   236,   108,     0,     0,     0,     0,
+     273,   274,     0,   306,   271,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   312,   328,     0,     0,   125,
+       0,   324,   325,     0,   327,     0,   333,   284,     0,   336,
+     286,     0,     0,     0,     0,   292,   293,   294,   295,   346,
+     339,     0,   298,     0,     0,     0,   303,     0,     0,   290,
+       0,     0,   291,     0,     0,     0,   309,     0,     0,   310,
+       0,   364,     0,     0,     0,     0,     0,   361,   363,     0,
+     326,     0,     0,   329,     0,     0,   331,     0,     0,     0,
+       0,     0,   335,     0,     0,     0,     0,     0,   340,   341,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     351,     0,     0,     0,     0,     0,     0,   355,     0,   357,
+       0,     0,     0,     0,   362,   -10,     1,     0,   362,     0,
+       0,     0,   365,   366,   367,     0,     0,     2,     3,     4,
+       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
+      13,     0,    14,    15,    16,     0,    17,     0,    18,     0,
+       0,     0,    19,     0,    20,    21,    22,     0,     0,    23,
+       0,     0,     0,     0,    24,    25,    26,     0,     0,     0,
+      27,     0,     0,     0,    28,    29,    30,    31,     0,    32,
+       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
+       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
+       0,     0,    39,    40,    41,    42,     0,     0,    43,    44,
+       0,     0,     0,   -10,    45,     0,     0,     0,    46,     2,
+       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
+      11,    12,    13,     0,    14,    15,    16,     0,    17,     0,
+      18,     0,     0,     0,    19,     0,    20,    21,    22,     0,
+       0,    23,     0,     0,     0,     0,    24,    25,    26,     0,
+       0,     0,    27,     0,     0,     0,    28,    29,    30,    31,
+       0,    32,     0,     0,     0,     0,     0,     0,     0,     0,
+      33,     0,     0,     0,     0,     0,     0,    34,    35,    36,
+      37,    38,     0,     0,    39,    40,    41,    42,     0,     0,
+      43,    44,     0,     0,     0,     0,    45,     0,     0,     0,
+      46,     2,     3,     4,     5,     0,     6,     7,     8,     9,
+      10,     0,    11,    12,    13,     0,    14,    68,    16,     0,
+      17,   323,    18,     0,     0,     0,    19,     0,    20,    21,
+      22,     0,     0,     0,     0,     0,     0,     0,    24,    25,
+      26,     0,     0,     0,    27,     0,     0,     0,     0,     0,
+      30,    31,     0,    32,     0,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
+      35,    36,    37,    38,     0,     0,    39,    40,     0,    42,
+       0,     0,    43,    44,     0,     0,     0,    66,    45,     0,
+       0,     0,    46,     2,     3,     4,     5,     0,     6,     7,
+       8,     9,    10,     0,    11,    12,    13,     0,    14,    68,
+      16,     0,    17,     0,    18,     0,     0,     0,    19,     0,
+      20,    21,    22,     0,     0,     0,     0,     0,     0,     0,
+      24,    25,    26,     0,     0,     0,    27,     0,     0,     0,
+       0,     0,    30,    31,     0,    32,     0,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
+       0,    34,    35,    36,    37,    38,     0,     0,    39,    40,
+       0,    42,     0,     0,    43,    44,     0,     0,     0,    66,
+      45,     0,     0,     0,    46,     2,     3,     4,     5,     0,
+       6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
+      14,    68,    16,     0,    17,     0,    18,     0,     0,     0,
+      19,     0,    20,    21,    22,     0,     0,     0,     0,     0,
+       0,     0,    24,    25,    26,     0,     0,     0,    27,     0,
+       0,     0,     0,     0,    30,    31,     0,    32,     0,     0,
+       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
+       0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
+      39,    40,     0,    42,     0,     0,    43,    44,     0,     0,
+       0,     0,    45,     0,     0,     0,    46,     2,     3,     4,
+       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
+      13,     0,    14,    68,    16,   207,    17,     0,    18,     0,
+       0,     0,    19,     0,    20,    21,   135,   136,     0,     0,
+     137,   138,   139,   140,    24,   141,    26,     0,   142,   143,
+     144,     0,     0,     0,     0,     0,    30,    31,     0,    32,
+       0,     0,     0,   145,   146,   147,   148,   149,    33,    66,
+       0,     0,   150,   151,     0,    34,    35,    36,    37,    38,
+       0,     0,     0,    40,     0,    42,     0,     0,    43,    44,
+       2,     3,     4,     5,    45,     0,     0,     0,    46,     0,
+       0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
+       0,     0,     0,     0,     0,     0,    87,     0,     0,     0,
+       0,    88,     0,    89,    90,    91,    92,    69,     0,    26,
+       0,     2,     3,     4,     5,     0,     0,     0,     0,     0,
+       0,     0,    11,    12,    13,     0,    14,    68,    16,     0,
+      17,    33,     0,     0,     0,     0,     0,    87,    34,    35,
+      36,    37,    38,     0,    89,     0,    91,     0,    69,     0,
+      26,    43,    44,     0,     0,     0,     0,    45,     0,     0,
+       0,    46,   107,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
+      35,    36,    37,    38,     2,     3,     4,     5,     0,     0,
+       0,     0,    43,    44,     0,    11,    12,    13,    45,    14,
+      68,    16,    46,    17,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    69,     0,    26,     2,     3,     4,     5,     0,     0,
        0,     0,     0,     0,     0,    11,    12,    13,     0,    14,
-      68,    16,     0,    17,    33,     0,     0,     0,     0,     0,
-      87,    34,    35,    36,    37,    38,     0,    89,     0,    91,
-       0,    69,     0,    26,    43,    44,     0,     0,     0,     0,
-      45,     0,     0,     0,    46,   107,     0,     0,     0,     0,
+      68,    16,     0,    17,     0,    33,     0,     0,     0,     0,
+       0,     0,    34,    35,    36,    37,    38,     0,     0,     0,
+       0,    69,     0,    26,     0,    43,    44,     0,     0,     0,
+       0,    45,     0,     0,     0,    46,     0,     0,     0,     0,
        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
        0,     0,    34,    35,    36,    37,    38,     2,     3,     4,
        5,     0,     0,     0,     0,    43,    44,     0,    11,    12,
-      13,    45,    14,    68,    16,    46,    17,     0,     0,     0,
+      13,    73,    14,    68,    16,    46,    17,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    69,     0,    26,     2,     3,     4,
        5,     0,     0,     0,     0,     0,     0,     0,    11,    12,
       13,     0,    14,    68,    16,     0,    17,     0,    33,     0,
        0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
        0,     0,     0,     0,    69,     0,    26,     0,    43,    44,
-       0,     0,     0,     0,    45,     0,     0,     0,    46,     0,
+       0,     0,     0,     0,    78,     0,     0,     0,    46,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
-       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
-       2,     3,     4,     5,     0,     0,     0,     0,    43,    44,
-       0,    11,    12,    13,    73,    14,    68,    16,    46,    17,
+       0,     0,   169,     0,     0,    34,    35,    36,    37,    38,
+       0,     0,     0,     0,     0,     0,     0,     0,    43,    44,
+       0,     0,     0,     0,    81,   135,   136,     0,    46,   137,
+     138,   139,   140,     0,   141,   170,   171,   142,   143,   144,
+       0,   184,     0,     0,     0,     0,     0,     0,   185,     0,
+       0,     0,   145,   146,   147,   148,   149,     0,     0,   135,
+     136,   150,   151,   137,   138,   139,   140,     0,   141,     0,
+       0,   142,   143,   144,     0,   186,     0,     0,     0,     0,
+       0,     0,   187,     0,     0,     0,   145,   146,   147,   148,
+     149,     0,     0,   135,   136,   150,   151,   137,   138,   139,
+     140,     0,   141,     0,     0,   142,   143,   144,     0,   188,
+       0,     0,     0,     0,     0,     0,   189,     0,     0,     0,
+     145,   146,   147,   148,   149,     0,     0,   135,   136,   150,
+     151,   137,   138,   139,   140,     0,   141,     0,     0,   142,
+     143,   144,     0,   190,     0,     0,     0,     0,     0,     0,
+     191,     0,     0,     0,   145,   146,   147,   148,   149,     0,
+       0,   135,   136,   150,   151,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,     0,   276,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   145,   146,
+     147,   148,   149,     0,     0,   135,   136,   150,   151,   137,
+     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
+       0,   277,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   145,   146,   147,   148,   149,     0,     0,   135,
+     136,   150,   151,   137,   138,   139,   140,     0,   141,     0,
+       0,   142,   143,   144,     0,   278,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   145,   146,   147,   148,
+     149,     0,     0,   135,   136,   150,   151,   137,   138,   139,
+     140,     0,   141,     0,     0,   142,   143,   144,     0,   279,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    69,     0,    26,
-       2,     3,     4,     5,     0,     0,     0,     0,     0,     0,
-       0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
-       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
-      36,    37,    38,     0,     0,     0,     0,    69,     0,    26,
-       0,    43,    44,     0,     0,     0,     0,    78,     0,     0,
-       0,    46,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    33,     0,     0,     0,   169,     0,     0,    34,    35,
-      36,    37,    38,     0,     0,     0,     0,     0,     0,     0,
-       0,    43,    44,     0,     0,     0,     0,    81,   135,   136,
-       0,    46,   137,   138,   139,   140,     0,   141,   170,   171,
-     142,   143,   144,     0,   183,     0,     0,     0,     0,     0,
-       0,   184,     0,     0,     0,   145,   146,   147,   148,   149,
-       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,   185,     0,
-       0,     0,     0,     0,     0,   186,     0,     0,     0,   145,
-     146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
-     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,   187,     0,     0,     0,     0,     0,     0,   188,
-       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
-     135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
-       0,     0,   142,   143,   144,     0,   189,     0,     0,     0,
-       0,     0,     0,   190,     0,     0,     0,   145,   146,   147,
-     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
-     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
-     276,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
-     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,     0,   277,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
-       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,   278,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   145,
-     146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
-     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,   279,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
-     135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
-       0,     0,   142,   143,   144,     0,     0,     0,     0,     0,
-       0,     0,     0,   240,     0,     0,     0,   145,   146,   147,
-     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
-     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   180,
-     241,   145,   146,   147,   148,   149,     0,     0,   135,   136,
-     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
-       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
-       0,     0,   191,   192,     0,     0,     0,     0,     0,   145,
-     146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
-     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
-       0,   195,   150,   151,   135,   136,     0,     0,   137,   138,
-     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
+     145,   146,   147,   148,   149,     0,     0,   135,   136,   150,
+     151,   137,   138,   139,   140,     0,   141,     0,     0,   142,
+     143,   144,     0,     0,     0,     0,     0,     0,     0,     0,
+     241,     0,     0,     0,   145,   146,   147,   148,   149,     0,
+       0,   135,   136,   150,   151,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   181,   242,   145,   146,
+     147,   148,   149,     0,     0,   135,   136,   150,   151,   137,
+     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   145,   146,   147,   148,   149,     0,     0,   135,
+     136,   150,   151,   137,   138,   139,   140,     0,   141,     0,
+       0,   142,   143,   144,     0,     0,     0,     0,     0,   192,
+     193,     0,     0,     0,     0,     0,   145,   146,   147,   148,
+     149,     0,     0,   135,   136,   150,   151,   137,   138,   139,
+     140,     0,   141,     0,     0,   142,   143,   144,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   145,   146,   147,   148,   149,     0,     0,     0,     0,
-     150,   151
+     145,   146,   147,   148,   149,     0,     0,     0,   196,   150,
+     151,   135,   136,     0,     0,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   145,   146,
+     147,   148,   149,     0,     0,   135,   136,   150,   151,   137,
+     138,     0,     0,     0,   141,     0,     0,   142,   143,   144,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   145,   146,   147,   148,   149,     0,     0,     0,
+       0,   150,   151
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    56,    55,     4,     0,    32,     7,     8,     9,    46,
-      54,    12,    13,    14,    15,    31,    54,   299,     1,    13,
-      21,    15,   314,    24,    98,    45,    77,    47,   320,    30,
-      31,    58,    33,    34,    35,    36,    37,    38,    74,    76,
-      32,    77,    43,    44,    45,    46,    83,    91,   330,    41,
-     101,   102,    36,    91,   303,    50,    57,    28,    50,    95,
-      96,    34,   233,    55,    47,   101,   102,    28,    69,    28,
-     319,    28,    73,   244,    58,    76,   168,    78,    94,    73,
-      81,    54,    83,    91,    78,    28,    87,   179,    89,    28,
-      13,    14,   108,    74,    98,    87,    77,    28,   100,    28,
-     101,   105,    98,   105,    74,    28,    98,    77,    56,    57,
-     202,    92,    93,    94,    95,    96,   104,   105,    52,    53,
-     101,   102,   100,    93,    94,    95,    96,   105,   128,   130,
+       0,    56,    55,     4,   132,     0,     7,     8,     9,    46,
+      31,    12,    13,    14,    15,    54,   303,   234,     1,    13,
+      21,    15,    54,    24,    32,    36,   100,    98,   245,    30,
+      31,   105,    33,    34,    35,    36,    37,    38,   302,    76,
+      32,   168,    43,    44,    45,    46,    83,    58,   335,    41,
+      58,   315,    91,   180,    13,    14,    57,   100,    50,    91,
+      98,    34,   105,    55,    47,   100,    50,   105,    69,    28,
+     105,    74,    73,    94,    77,    76,    28,    78,   205,    73,
+      81,    54,    83,    45,    78,    47,    87,   108,    89,    92,
+      93,    94,    95,    96,    74,    87,   100,    77,   101,   102,
+     101,   105,    28,    98,    74,   316,    98,    77,    56,    57,
+     321,    28,   100,    93,    94,    95,    96,   105,   104,   105,
+      28,   101,   102,    52,    53,    95,    96,    28,   128,   130,
      131,   101,   102,    28,   135,   136,   137,   138,   139,   140,
      141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   134,   153,   100,   100,   100,   157,    99,   105,   105,
-     105,   204,    27,    28,   207,   166,    52,    53,   105,   170,
-     171,    99,   173,   174,    45,   176,   177,   290,   291,   180,
-     105,    28,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,    52,   285,   105,   105,   197,    28,    28,   105,
-      28,    28,   199,    28,   201,   206,    32,    28,   105,    54,
-     302,   266,    32,    28,    36,    28,    58,    52,    32,    28,
-     312,    32,   259,   105,    32,    32,   128,   299,   319,   169,
-      31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   240,
-     241,    -1,    -1,   226,    -1,    -1,   289,    -1,    -1,    -1,
-     342,    -1,   344,    -1,    -1,    -1,   348,   349,   259,   302,
-      -1,    -1,   317,   316,   307,   308,    -1,   310,    -1,   322,
-     267,    -1,   269,   328,    -1,   276,   277,   278,   279,    -1,
-      -1,    -1,   283,   326,    -1,    -1,    -1,   284,    -1,   272,
-      -1,    -1,   275,    -1,    -1,    -1,   297,    -1,    -1,   354,
-      -1,   298,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   309,    -1,   357,   358,    -1,   314,    -1,    -1,
-      -1,   318,   319,    -1,    65,    66,    -1,    -1,    69,    70,
-     327,    -1,    -1,    74,    -1,   332,    77,    78,    79,    -1,
-      -1,    -1,   339,    -1,   341,    -1,   343,    -1,    -1,    -1,
-      -1,    92,    93,    94,    95,    96,   356,   357,     0,     1,
-     101,   102,    -1,    -1,    -1,   362,   363,   364,    -1,    -1,
-      12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
+     151,   134,   153,    77,    27,    28,   157,   284,   204,   290,
+     291,    28,   208,    28,    28,   166,    99,    99,    91,   170,
+     171,   105,   173,   174,   301,   176,   177,   101,   102,    45,
+     181,    28,    52,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   320,   105,   105,   105,   198,    28,    28,
+     105,   200,    28,   202,    28,   333,   207,    28,   336,    32,
+      28,   105,   267,    54,    28,    32,    36,   344,   345,    28,
+     347,    32,   349,   260,    32,    58,   105,    32,    28,    32,
+     333,   128,   315,   303,   169,    31,    -1,    -1,    -1,    -1,
+     241,   242,    -1,   289,   227,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   301,   311,    -1,    -1,   260,
+      -1,   307,   308,    -1,   310,    -1,   319,   266,    -1,   322,
+     269,    -1,    -1,    -1,    -1,   276,   277,   278,   279,   334,
+     326,    -1,   283,    -1,    -1,    -1,   285,    -1,    -1,   272,
+      -1,    -1,   275,    -1,    -1,    -1,   297,    -1,    -1,   298,
+      -1,   356,    -1,    -1,    -1,    -1,    -1,   353,   354,    -1,
+     309,    -1,    -1,   312,    -1,    -1,   315,    -1,    -1,    -1,
+      -1,    -1,   321,    -1,    -1,    -1,    -1,    -1,   327,   328,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     339,    -1,    -1,    -1,    -1,    -1,    -1,   346,    -1,   348,
+      -1,    -1,    -1,    -1,   354,     0,     1,    -1,   358,    -1,
+      -1,    -1,   361,   362,   363,    -1,    -1,    12,    13,    14,
+      15,    -1,    17,    18,    19,    20,    21,    -1,    23,    24,
+      25,    -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,
+      -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,    44,
+      -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,
+      55,    -1,    -1,    -1,    59,    60,    61,    62,    -1,    64,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
+      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
+      -1,    -1,    87,    88,    89,    90,    -1,    -1,    93,    94,
+      -1,    -1,    -1,    98,    99,    -1,    -1,    -1,   103,    12,
+      13,    14,    15,    -1,    17,    18,    19,    20,    21,    -1,
+      23,    24,    25,    -1,    27,    28,    29,    -1,    31,    -1,
+      33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,
+      -1,    44,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,
+      -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,    62,
+      -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
+      83,    84,    -1,    -1,    87,    88,    89,    90,    -1,    -1,
+      93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,
+     103,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
+      21,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
+      31,    32,    33,    -1,    -1,    -1,    37,    -1,    39,    40,
+      41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50,
+      51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,
+      61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,
+      81,    82,    83,    84,    -1,    -1,    87,    88,    -1,    90,
+      -1,    -1,    93,    94,    -1,    -1,    -1,    98,    99,    -1,
+      -1,    -1,   103,    12,    13,    14,    15,    -1,    17,    18,
+      19,    20,    21,    -1,    23,    24,    25,    -1,    27,    28,
+      29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,
+      39,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,
+      -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,
+      -1,    80,    81,    82,    83,    84,    -1,    -1,    87,    88,
+      -1,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,    98,
+      99,    -1,    -1,    -1,   103,    12,    13,    14,    15,    -1,
+      17,    18,    19,    20,    21,    -1,    23,    24,    25,    -1,
+      27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
+      37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,
+      -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,
+      -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,
+      87,    88,    -1,    90,    -1,    -1,    93,    94,    -1,    -1,
+      -1,    -1,    99,    -1,    -1,    -1,   103,    12,    13,    14,
+      15,    -1,    17,    18,    19,    20,    21,    -1,    23,    24,
+      25,    -1,    27,    28,    29,    54,    31,    -1,    33,    -1,
+      -1,    -1,    37,    -1,    39,    40,    65,    66,    -1,    -1,
+      69,    70,    71,    72,    49,    74,    51,    -1,    77,    78,
+      79,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    73,    98,
+      -1,    -1,   101,   102,    -1,    80,    81,    82,    83,    84,
+      -1,    -1,    -1,    88,    -1,    90,    -1,    -1,    93,    94,
+      12,    13,    14,    15,    99,    -1,    -1,    -1,   103,    -1,
       -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
-      -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,
-      -1,    -1,    44,    -1,    -1,    -1,    -1,    49,    50,    51,
-      -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,
-      62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      82,    83,    84,    -1,    -1,    87,    88,    89,    90,    -1,
-      -1,    93,    94,    -1,    -1,    -1,    98,    99,    -1,    -1,
-      -1,   103,    12,    13,    14,    15,    -1,    17,    18,    19,
-      20,    21,    -1,    23,    24,    25,    -1,    27,    28,    29,
-      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,
-      40,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,    49,
-      50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,
-      60,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    89,
-      90,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,
-      -1,    -1,    -1,   103,    12,    13,    14,    15,    -1,    17,
-      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
-      28,    29,    -1,    31,    32,    33,    -1,    -1,    -1,    37,
-      -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,
-      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    87,
-      88,    -1,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
-      98,    99,    -1,    -1,    -1,   103,    12,    13,    14,    15,
-      -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
-      -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
-      -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
-      -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
-      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
-      -1,    87,    88,    -1,    90,    -1,    -1,    93,    94,    -1,
-      -1,    -1,    98,    99,    -1,    -1,    -1,   103,    12,    13,
-      14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
-      24,    25,    -1,    27,    28,    29,    -1,    31,    -1,    33,
-      -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
-      -1,    55,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
-      -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
-      84,    -1,    -1,    87,    88,    -1,    90,    -1,    -1,    93,
-      94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,
-      12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
-      -1,    23,    24,    25,    -1,    27,    28,    29,    54,    31,
-      -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    65,
-      66,    -1,    -1,    69,    70,    71,    72,    49,    74,    51,
-      -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    61,
-      62,    -1,    64,    -1,    -1,    -1,    92,    93,    94,    95,
-      96,    73,    98,    -1,    -1,   101,   102,    -1,    80,    81,
-      82,    83,    84,    -1,    -1,    -1,    88,    -1,    90,    -1,
-      -1,    93,    94,    12,    13,    14,    15,    99,    -1,    -1,
-      -1,   103,    -1,    -1,    23,    24,    25,    -1,    27,    28,
-      29,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,    38,
-      -1,    -1,    -1,    -1,    43,    -1,    45,    46,    47,    48,
-      49,    -1,    51,    -1,    12,    13,    14,    15,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,
+      -1,    43,    -1,    45,    46,    47,    48,    49,    -1,    51,
+      -1,    12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
+      31,    73,    -1,    -1,    -1,    -1,    -1,    38,    80,    81,
+      82,    83,    84,    -1,    45,    -1,    47,    -1,    49,    -1,
+      51,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,
+      -1,   103,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,
+      81,    82,    83,    84,    12,    13,    14,    15,    -1,    -1,
+      -1,    -1,    93,    94,    -1,    23,    24,    25,    99,    27,
+      28,    29,   103,    31,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    49,    -1,    51,    12,    13,    14,    15,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    23,    24,    25,    -1,    27,
-      28,    29,    -1,    31,    73,    -1,    -1,    -1,    -1,    -1,
-      38,    80,    81,    82,    83,    84,    -1,    45,    -1,    47,
-      -1,    49,    -1,    51,    93,    94,    -1,    -1,    -1,    -1,
-      99,    -1,    -1,    -1,   103,    63,    -1,    -1,    -1,    -1,
+      28,    29,    -1,    31,    -1,    73,    -1,    -1,    -1,    -1,
+      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,
+      -1,    49,    -1,    51,    -1,    93,    94,    -1,    -1,    -1,
+      -1,    99,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
       -1,    -1,    80,    81,    82,    83,    84,    12,    13,    14,
       15,    -1,    -1,    -1,    -1,    93,    94,    -1,    23,    24,
@@ -1223,69 +1237,61 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    49,    -1,    51,    -1,    93,    94,
       -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
-      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      12,    13,    14,    15,    -1,    -1,    -1,    -1,    93,    94,
-      -1,    23,    24,    25,    99,    27,    28,    29,   103,    31,
+      -1,    -1,    42,    -1,    -1,    80,    81,    82,    83,    84,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
+      -1,    -1,    -1,    -1,    99,    65,    66,    -1,   103,    69,
+      70,    71,    72,    -1,    74,    75,    76,    77,    78,    79,
+      -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,
+      -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    65,
+      66,   101,   102,    69,    70,    71,    72,    -1,    74,    -1,
+      -1,    77,    78,    79,    -1,    47,    -1,    -1,    -1,    -1,
+      -1,    -1,    54,    -1,    -1,    -1,    92,    93,    94,    95,
+      96,    -1,    -1,    65,    66,   101,   102,    69,    70,    71,
+      72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,
+      -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,
+      92,    93,    94,    95,    96,    -1,    -1,    65,    66,   101,
+     102,    69,    70,    71,    72,    -1,    74,    -1,    -1,    77,
+      78,    79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,
+      54,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
+      -1,    65,    66,   101,   102,    69,    70,    71,    72,    -1,
+      74,    -1,    -1,    77,    78,    79,    -1,    47,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
+      94,    95,    96,    -1,    -1,    65,    66,   101,   102,    69,
+      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
+      -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    65,
+      66,   101,   102,    69,    70,    71,    72,    -1,    74,    -1,
+      -1,    77,    78,    79,    -1,    47,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
+      96,    -1,    -1,    65,    66,   101,   102,    69,    70,    71,
+      72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,    51,
-      12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
-      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      82,    83,    84,    -1,    -1,    -1,    -1,    49,    -1,    51,
-      -1,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,
-      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    73,    -1,    -1,    -1,    42,    -1,    -1,    80,    81,
-      82,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    93,    94,    -1,    -1,    -1,    -1,    99,    65,    66,
-      -1,   103,    69,    70,    71,    72,    -1,    74,    75,    76,
-      77,    78,    79,    -1,    47,    -1,    -1,    -1,    -1,    -1,
-      -1,    54,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-      -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
-      -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
-      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,
-      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
-      65,    66,   101,   102,    69,    70,    71,    72,    -1,    74,
-      -1,    -1,    77,    78,    79,    -1,    47,    -1,    -1,    -1,
-      -1,    -1,    -1,    54,    -1,    -1,    -1,    92,    93,    94,
-      95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
-      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
-      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
-     101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
-      77,    78,    79,    -1,    47,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-      -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
-      -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
-      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
-      65,    66,   101,   102,    69,    70,    71,    72,    -1,    74,
-      -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    54,    -1,    -1,    -1,    92,    93,    94,
-      95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
-      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,
-      91,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
-     101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
-      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-      -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
-      -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
-      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
-      -1,   100,   101,   102,    65,    66,    -1,    -1,    69,    70,
-      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
+      92,    93,    94,    95,    96,    -1,    -1,    65,    66,   101,
+     102,    69,    70,    71,    72,    -1,    74,    -1,    -1,    77,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      54,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
+      -1,    65,    66,   101,   102,    69,    70,    71,    72,    -1,
+      74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    56,    91,    92,    93,
+      94,    95,    96,    -1,    -1,    65,    66,   101,   102,    69,
+      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    65,
+      66,   101,   102,    69,    70,    71,    72,    -1,    74,    -1,
+      -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    85,
+      86,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
+      96,    -1,    -1,    65,    66,   101,   102,    69,    70,    71,
+      72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    92,    93,    94,    95,    96,    -1,    -1,    -1,    -1,
-     101,   102
+      92,    93,    94,    95,    96,    -1,    -1,    -1,   100,   101,
+     102,    65,    66,    -1,    -1,    69,    70,    71,    72,    -1,
+      74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
+      94,    95,    96,    -1,    -1,    65,    66,   101,   102,    69,
+      70,    -1,    -1,    -1,    74,    -1,    -1,    77,    78,    79,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    -1,
+      -1,   101,   102
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1296,39 +1302,39 @@ static const yytype_uint8 yystos[] =
       21,    23,    24,    25,    27,    28,    29,    31,    33,    37,
       39,    40,    41,    44,    49,    50,    51,    55,    59,    60,
       61,    62,    64,    73,    80,    81,    82,    83,    84,    87,
-      88,    89,    90,    93,    94,    99,   103,   107,   112,   113,
-     114,   115,   116,   125,   126,   127,   132,   133,   134,   135,
+      88,    89,    90,    93,    94,    99,   103,   107,   113,   114,
+     115,   116,   117,   125,   126,   127,   132,   133,   134,   135,
      136,   140,   143,   145,   148,   152,    98,   108,    28,    49,
      134,   134,   134,    99,   134,   154,    28,   134,    99,   154,
      134,    99,   154,   144,    50,    28,   137,    38,    43,    45,
       46,    47,    48,   134,   141,   142,    28,   134,    56,    57,
       13,    14,    28,    28,    28,    28,   134,    63,   141,   142,
       28,   139,   134,   134,   134,   134,   134,   134,    28,   138,
-      28,    99,   134,   134,   134,   134,   153,     0,   108,   122,
-     123,    91,   122,   114,   134,    65,    66,    69,    70,    71,
+      28,    99,   134,   134,   134,   134,   153,     0,   108,   123,
+     124,    91,   123,   115,   134,    65,    66,    69,    70,    71,
       72,    74,    77,    78,    79,    92,    93,    94,    95,    96,
      101,   102,   129,    99,   134,   134,   154,   105,   153,   154,
      134,   153,   153,   105,   134,   134,    45,   142,   146,    42,
-      75,    76,    28,    54,    91,   134,    54,    91,    52,   147,
-      56,   142,   105,    47,    54,    47,    54,    47,    54,    47,
-      54,    85,    86,   105,    28,   100,   104,   105,   112,   131,
-     134,   134,    52,    53,   109,   130,    54,   108,   134,   134,
+      75,    76,    28,    54,    91,   134,    54,    91,    52,   112,
+     147,    56,   142,   105,    47,    54,    47,    54,    47,    54,
+      47,    54,    85,    86,   105,    28,   100,   104,   105,   113,
+     131,   134,   134,    53,   109,   112,   130,    54,   108,   134,
      134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,    28,   149,   100,   134,   100,
-     100,    28,   134,   129,    28,   135,   134,   134,   134,   134,
-      54,    91,   134,   134,   129,   134,    28,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,    28,   100,   105,
-     134,   108,   115,   130,   124,   130,   129,   131,   134,   131,
+     134,   134,   134,   134,   134,   134,    28,   149,   100,   134,
+     100,   100,    28,   134,   129,    28,   135,   134,   134,   134,
+     134,    54,    91,   134,   134,   129,   134,    28,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,    28,   100,
+     105,   134,   108,   116,   130,   130,   131,   129,   134,   131,
      105,   108,   149,   134,   134,   149,    47,    47,    47,    47,
-     153,    32,    34,    54,   114,   130,   130,    28,   105,   151,
-     108,   108,   134,   134,   134,   134,   100,    54,   134,   130,
-      32,    58,   110,   129,    32,    28,   131,   151,   151,   134,
-     130,    36,   110,   111,   119,   120,   128,   129,   131,   118,
-     119,   121,   128,    32,   131,   131,   130,   131,   129,   120,
-     130,   122,   114,   130,   121,   130,   122,    28,   150,   131,
-     130,   114,   110,   117,    52,   130,    32,    32,    52,    53,
-     105,   130,    32,   130,   129,   130,   129,   129,   129,    28,
-      32,   114,   115,   131,   131,   130,   130,   130
+     153,    32,    34,    54,   130,   115,   130,    28,   105,   151,
+     108,   108,   134,   134,   134,   134,   100,    54,   134,    32,
+      58,   110,   129,   130,    32,    28,   131,   151,   151,   134,
+     130,   129,   131,    36,   111,   119,   120,   121,   122,   128,
+     110,   120,   128,    32,   131,   131,   130,   131,   115,   130,
+     122,   130,   121,   123,   129,   130,   123,    28,   150,   131,
+     130,   130,    32,    32,   109,   112,   115,   110,   118,   112,
+     105,   130,    32,   129,   129,   130,   129,   130,   129,    28,
+      32,   131,   116,   131,   115,   130,   130,   130
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2152,35 +2158,44 @@ yyreduce:
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 1;
-	;}
+
+		g_lingo->_inCond = false; ;}
     break;
 
   case 6:
-#line 131 "engines/director/lingo/lingo-gr.y"
+#line 133 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 1;
-	;}
+
+		g_lingo->_inCond = false; ;}
     break;
 
   case 7:
-#line 136 "engines/director/lingo/lingo-gr.y"
+#line 140 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 5;
-	;}
+
+		g_lingo->_inCond = false; ;}
     break;
 
   case 8:
-#line 141 "engines/director/lingo/lingo-gr.y"
+#line 147 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 8;
-	;}
+
+		g_lingo->_inCond = false; 	;}
     break;
 
-  case 13:
-#line 152 "engines/director/lingo/lingo-gr.y"
+  case 9:
+#line 154 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->_inCond = false; ;}
+    break;
+
+  case 14:
+#line 163 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str());
@@ -2189,25 +2204,25 @@ yyreduce:
 		delete (yyvsp[(4) - (4)].s); ;}
     break;
 
-  case 14:
-#line 158 "engines/director/lingo/lingo-gr.y"
+  case 15:
+#line 169 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_assign);
 			(yyval.code) = (yyvsp[(2) - (4)].code); ;}
     break;
 
-  case 15:
-#line 161 "engines/director/lingo/lingo-gr.y"
+  case 16:
+#line 172 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_after); ;}
     break;
 
-  case 16:
-#line 162 "engines/director/lingo/lingo-gr.y"
+  case 17:
+#line 173 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_before); ;}
     break;
 
-  case 17:
-#line 163 "engines/director/lingo/lingo-gr.y"
+  case 18:
+#line 174 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2216,8 +2231,8 @@ yyreduce:
 		delete (yyvsp[(2) - (4)].s); ;}
     break;
 
-  case 18:
-#line 169 "engines/director/lingo/lingo-gr.y"
+  case 19:
+#line 180 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2227,8 +2242,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(4) - (4)].code); ;}
     break;
 
-  case 19:
-#line 176 "engines/director/lingo/lingo-gr.y"
+  case 20:
+#line 187 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2237,8 +2252,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(5) - (5)].code); ;}
     break;
 
-  case 20:
-#line 182 "engines/director/lingo/lingo-gr.y"
+  case 21:
+#line 193 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2247,8 +2262,8 @@ yyreduce:
 		delete (yyvsp[(2) - (4)].s); ;}
     break;
 
-  case 21:
-#line 188 "engines/director/lingo/lingo-gr.y"
+  case 22:
+#line 199 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2258,8 +2273,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(4) - (4)].code); ;}
     break;
 
-  case 22:
-#line 195 "engines/director/lingo/lingo-gr.y"
+  case 23:
+#line 206 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2268,8 +2283,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(5) - (5)].code); ;}
     break;
 
-  case 27:
-#line 213 "engines/director/lingo/lingo-gr.y"
+  case 28:
+#line 224 "engines/director/lingo/lingo-gr.y"
     {
 		inst body = 0, end = 0;
 		WRITE_UINT32(&body, (yyvsp[(3) - (5)].code) - (yyvsp[(1) - (5)].code));
@@ -2280,8 +2295,8 @@ yyreduce:
 		checkEnd((yyvsp[(5) - (5)].s), "repeat", true); ;}
     break;
 
-  case 28:
-#line 226 "engines/director/lingo/lingo-gr.y"
+  case 29:
+#line 237 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2298,8 +2313,8 @@ yyreduce:
 		checkEnd((yyvsp[(10) - (10)].s), "repeat", true); ;}
     break;
 
-  case 29:
-#line 244 "engines/director/lingo/lingo-gr.y"
+  case 30:
+#line 255 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (11)].code) - (yyvsp[(1) - (11)].code));
@@ -2316,8 +2331,8 @@ yyreduce:
 		checkEnd((yyvsp[(11) - (11)].s), "repeat", true); ;}
     break;
 
-  case 30:
-#line 258 "engines/director/lingo/lingo-gr.y"
+  case 31:
+#line 269 "engines/director/lingo/lingo-gr.y"
     {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[(3) - (3)].code) - (yyvsp[(1) - (3)].code));
@@ -2325,22 +2340,22 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[(1) - (3)].code) + 1] = end; ;}
     break;
 
-  case 31:
-#line 263 "engines/director/lingo/lingo-gr.y"
+  case 32:
+#line 274 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 			checkEnd((yyvsp[(6) - (6)].s), "tell", true); ;}
     break;
 
-  case 32:
-#line 266 "engines/director/lingo/lingo-gr.y"
+  case 33:
+#line 277 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 		;}
     break;
 
-  case 33:
-#line 271 "engines/director/lingo/lingo-gr.y"
+  case 34:
+#line 282 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2353,8 +2368,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 34:
-#line 281 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 292 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2369,8 +2384,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 35:
-#line 293 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 304 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2385,8 +2400,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(8) - (9)].code) - (yyvsp[(1) - (9)].code)); ;}
     break;
 
-  case 36:
-#line 305 "engines/director/lingo/lingo-gr.y"
+  case 37:
+#line 316 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2399,8 +2414,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(9) - (9)].code) - (yyvsp[(1) - (9)].code)); ;}
     break;
 
-  case 37:
-#line 315 "engines/director/lingo/lingo-gr.y"
+  case 38:
+#line 326 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2413,8 +2428,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(10) - (10)].code) - (yyvsp[(1) - (10)].code)); ;}
     break;
 
-  case 38:
-#line 325 "engines/director/lingo/lingo-gr.y"
+  case 39:
+#line 336 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2427,8 +2442,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 39:
-#line 335 "engines/director/lingo/lingo-gr.y"
+  case 40:
+#line 346 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2441,18 +2456,18 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 40:
-#line 347 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 358 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = 0; ;}
     break;
 
-  case 41:
-#line 348 "engines/director/lingo/lingo-gr.y"
+  case 42:
+#line 359 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 46:
-#line 359 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 370 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2461,8 +2476,8 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 48:
-#line 368 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 379 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2471,8 +2486,8 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 49:
-#line 374 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 385 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2481,28 +2496,23 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 50:
-#line 382 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(STOP); ;}
-    break;
-
   case 51:
-#line 385 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->_inCond = true; ;}
+#line 393 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(STOP); ;}
     break;
 
   case 52:
-#line 388 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->_inCond = false; ;}
+#line 396 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->_inCond = true; ;}
     break;
 
   case 53:
-#line 392 "engines/director/lingo/lingo-gr.y"
+#line 399 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
   case 54:
-#line 395 "engines/director/lingo/lingo-gr.y"
+#line 402 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2511,7 +2521,7 @@ yyreduce:
     break;
 
   case 55:
-#line 402 "engines/director/lingo/lingo-gr.y"
+#line 409 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2520,7 +2530,7 @@ yyreduce:
     break;
 
   case 56:
-#line 409 "engines/director/lingo/lingo-gr.y"
+#line 416 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2530,22 +2540,22 @@ yyreduce:
     break;
 
   case 57:
-#line 417 "engines/director/lingo/lingo-gr.y"
+#line 424 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 58:
-#line 420 "engines/director/lingo/lingo-gr.y"
+#line 427 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 59:
-#line 423 "engines/director/lingo/lingo-gr.y"
+#line 430 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 62:
-#line 428 "engines/director/lingo/lingo-gr.y"
+#line 435 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
@@ -2554,73 +2564,73 @@ yyreduce:
     break;
 
   case 63:
-#line 434 "engines/director/lingo/lingo-gr.y"
+#line 441 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_tellcode);
 		g_lingo->code1(STOP); ;}
     break;
 
   case 64:
-#line 438 "engines/director/lingo/lingo-gr.y"
+#line 445 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt((yyvsp[(1) - (1)].i)); ;}
     break;
 
   case 65:
-#line 441 "engines/director/lingo/lingo-gr.y"
+#line 448 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_floatpush);
 		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
   case 66:
-#line 444 "engines/director/lingo/lingo-gr.y"
+#line 451 "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 67:
-#line 447 "engines/director/lingo/lingo-gr.y"
+#line 454 "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 69:
-#line 451 "engines/director/lingo/lingo-gr.y"
+#line 458 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 70:
-#line 454 "engines/director/lingo/lingo-gr.y"
+#line 461 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 71:
-#line 457 "engines/director/lingo/lingo-gr.y"
+#line 464 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
   case 72:
-#line 458 "engines/director/lingo/lingo-gr.y"
+#line 465 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
   case 73:
-#line 459 "engines/director/lingo/lingo-gr.y"
+#line 466 "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 74:
-#line 462 "engines/director/lingo/lingo-gr.y"
+#line 469 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_eval);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str());
@@ -2628,7 +2638,7 @@ yyreduce:
     break;
 
   case 75:
-#line 466 "engines/director/lingo/lingo-gr.y"
+#line 473 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2640,7 +2650,7 @@ yyreduce:
     break;
 
   case 76:
-#line 474 "engines/director/lingo/lingo-gr.y"
+#line 481 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
@@ -2650,210 +2660,210 @@ yyreduce:
     break;
 
   case 78:
-#line 481 "engines/director/lingo/lingo-gr.y"
+#line 488 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_add); ;}
     break;
 
   case 79:
-#line 482 "engines/director/lingo/lingo-gr.y"
+#line 489 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_sub); ;}
     break;
 
   case 80:
-#line 483 "engines/director/lingo/lingo-gr.y"
+#line 490 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
   case 81:
-#line 484 "engines/director/lingo/lingo-gr.y"
+#line 491 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
   case 82:
-#line 485 "engines/director/lingo/lingo-gr.y"
+#line 492 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
   case 83:
-#line 486 "engines/director/lingo/lingo-gr.y"
+#line 493 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
   case 84:
-#line 487 "engines/director/lingo/lingo-gr.y"
+#line 494 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
   case 85:
-#line 488 "engines/director/lingo/lingo-gr.y"
+#line 495 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_eq); ;}
     break;
 
   case 86:
-#line 489 "engines/director/lingo/lingo-gr.y"
+#line 496 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
   case 87:
-#line 490 "engines/director/lingo/lingo-gr.y"
+#line 497 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
   case 88:
-#line 491 "engines/director/lingo/lingo-gr.y"
+#line 498 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
   case 89:
-#line 492 "engines/director/lingo/lingo-gr.y"
+#line 499 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
   case 90:
-#line 493 "engines/director/lingo/lingo-gr.y"
+#line 500 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
   case 91:
-#line 494 "engines/director/lingo/lingo-gr.y"
+#line 501 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
   case 92:
-#line 495 "engines/director/lingo/lingo-gr.y"
+#line 502 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
   case 93:
-#line 496 "engines/director/lingo/lingo-gr.y"
+#line 503 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
   case 94:
-#line 497 "engines/director/lingo/lingo-gr.y"
+#line 504 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
   case 95:
-#line 498 "engines/director/lingo/lingo-gr.y"
+#line 505 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
   case 96:
-#line 499 "engines/director/lingo/lingo-gr.y"
+#line 506 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
   case 97:
-#line 500 "engines/director/lingo/lingo-gr.y"
+#line 507 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
   case 98:
-#line 501 "engines/director/lingo/lingo-gr.y"
+#line 508 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 99:
-#line 502 "engines/director/lingo/lingo-gr.y"
+#line 509 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_arraypush); g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
   case 100:
-#line 503 "engines/director/lingo/lingo-gr.y"
+#line 510 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
   case 101:
-#line 504 "engines/director/lingo/lingo-gr.y"
+#line 511 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
   case 102:
-#line 505 "engines/director/lingo/lingo-gr.y"
+#line 512 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
   case 103:
-#line 506 "engines/director/lingo/lingo-gr.y"
+#line 513 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
   case 104:
-#line 507 "engines/director/lingo/lingo-gr.y"
+#line 514 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
   case 105:
-#line 508 "engines/director/lingo/lingo-gr.y"
+#line 515 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
   case 106:
-#line 509 "engines/director/lingo/lingo-gr.y"
+#line 516 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
   case 107:
-#line 510 "engines/director/lingo/lingo-gr.y"
+#line 517 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
   case 108:
-#line 511 "engines/director/lingo/lingo-gr.y"
+#line 518 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
   case 109:
-#line 512 "engines/director/lingo/lingo-gr.y"
+#line 519 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
   case 110:
-#line 515 "engines/director/lingo/lingo-gr.y"
+#line 522 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 111:
-#line 520 "engines/director/lingo/lingo-gr.y"
+#line 527 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
   case 114:
-#line 523 "engines/director/lingo/lingo-gr.y"
+#line 530 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
   case 115:
-#line 524 "engines/director/lingo/lingo-gr.y"
+#line 531 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
   case 119:
-#line 528 "engines/director/lingo/lingo-gr.y"
+#line 535 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 120:
-#line 531 "engines/director/lingo/lingo-gr.y"
+#line 538 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 121:
-#line 534 "engines/director/lingo/lingo-gr.y"
+#line 541 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 122:
-#line 537 "engines/director/lingo/lingo-gr.y"
+#line 544 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_voidpush);
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 1);
@@ -2861,87 +2871,87 @@ yyreduce:
     break;
 
   case 123:
-#line 541 "engines/director/lingo/lingo-gr.y"
+#line 548 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
   case 124:
-#line 542 "engines/director/lingo/lingo-gr.y"
+#line 549 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
   case 125:
-#line 543 "engines/director/lingo/lingo-gr.y"
+#line 550 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
   case 126:
-#line 544 "engines/director/lingo/lingo-gr.y"
+#line 551 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
   case 127:
-#line 545 "engines/director/lingo/lingo-gr.y"
+#line 552 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
   case 128:
-#line 546 "engines/director/lingo/lingo-gr.y"
+#line 553 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
   case 129:
-#line 547 "engines/director/lingo/lingo-gr.y"
+#line 554 "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 130:
-#line 550 "engines/director/lingo/lingo-gr.y"
+#line 557 "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 131:
-#line 551 "engines/director/lingo/lingo-gr.y"
+#line 558 "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 132:
-#line 554 "engines/director/lingo/lingo-gr.y"
+#line 561 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 133:
-#line 555 "engines/director/lingo/lingo-gr.y"
+#line 562 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 134:
-#line 558 "engines/director/lingo/lingo-gr.y"
+#line 565 "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 135:
-#line 559 "engines/director/lingo/lingo-gr.y"
+#line 566 "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 136:
-#line 570 "engines/director/lingo/lingo-gr.y"
+#line 577 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
   case 137:
-#line 571 "engines/director/lingo/lingo-gr.y"
+#line 578 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
   case 138:
-#line 572 "engines/director/lingo/lingo-gr.y"
+#line 579 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
   case 139:
-#line 573 "engines/director/lingo/lingo-gr.y"
+#line 580 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
@@ -2949,7 +2959,7 @@ yyreduce:
     break;
 
   case 140:
-#line 577 "engines/director/lingo/lingo-gr.y"
+#line 584 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
@@ -2957,7 +2967,7 @@ yyreduce:
     break;
 
   case 141:
-#line 581 "engines/director/lingo/lingo-gr.y"
+#line 588 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
@@ -2965,12 +2975,12 @@ yyreduce:
     break;
 
   case 146:
-#line 595 "engines/director/lingo/lingo-gr.y"
+#line 602 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
   case 147:
-#line 596 "engines/director/lingo/lingo-gr.y"
+#line 603 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
@@ -2978,7 +2988,7 @@ yyreduce:
     break;
 
   case 148:
-#line 600 "engines/director/lingo/lingo-gr.y"
+#line 607 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
@@ -2986,7 +2996,7 @@ yyreduce:
     break;
 
   case 149:
-#line 604 "engines/director/lingo/lingo-gr.y"
+#line 611 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
@@ -2994,24 +3004,24 @@ yyreduce:
     break;
 
   case 150:
-#line 608 "engines/director/lingo/lingo-gr.y"
+#line 615 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
   case 151:
-#line 608 "engines/director/lingo/lingo-gr.y"
+#line 615 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
   case 152:
-#line 638 "engines/director/lingo/lingo-gr.y"
+#line 645 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
   case 153:
-#line 639 "engines/director/lingo/lingo-gr.y"
+#line 646 "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));
@@ -3019,17 +3029,17 @@ yyreduce:
     break;
 
   case 154:
-#line 643 "engines/director/lingo/lingo-gr.y"
+#line 650 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFactory(*(yyvsp[(2) - (2)].s)); ;}
     break;
 
   case 155:
-#line 644 "engines/director/lingo/lingo-gr.y"
+#line 651 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
   case 156:
-#line 645 "engines/director/lingo/lingo-gr.y"
+#line 652 "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);
@@ -3037,7 +3047,7 @@ yyreduce:
     break;
 
   case 157:
-#line 649 "engines/director/lingo/lingo-gr.y"
+#line 656 "engines/director/lingo/lingo-gr.y"
     {	// D3
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*(yyvsp[(1) - (8)].s), (yyvsp[(2) - (8)].code), (yyvsp[(3) - (8)].narg));
@@ -3048,7 +3058,7 @@ yyreduce:
     break;
 
   case 158:
-#line 656 "engines/director/lingo/lingo-gr.y"
+#line 663 "engines/director/lingo/lingo-gr.y"
     {	// D4. No 'end' clause
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*(yyvsp[(1) - (6)].s), (yyvsp[(2) - (6)].code), (yyvsp[(3) - (6)].narg));
@@ -3057,37 +3067,37 @@ yyreduce:
     break;
 
   case 159:
-#line 662 "engines/director/lingo/lingo-gr.y"
+#line 669 "engines/director/lingo/lingo-gr.y"
     { (yyval.s) = (yyvsp[(2) - (2)].s); g_lingo->_indef = true; g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; ;}
     break;
 
   case 160:
-#line 664 "engines/director/lingo/lingo-gr.y"
+#line 671 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
   case 161:
-#line 665 "engines/director/lingo/lingo-gr.y"
+#line 672 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
   case 162:
-#line 666 "engines/director/lingo/lingo-gr.y"
+#line 673 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 163:
-#line 667 "engines/director/lingo/lingo-gr.y"
+#line 674 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
   case 167:
-#line 675 "engines/director/lingo/lingo-gr.y"
+#line 682 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
   case 168:
-#line 679 "engines/director/lingo/lingo-gr.y"
+#line 686 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -3097,33 +3107,33 @@ yyreduce:
     break;
 
   case 169:
-#line 687 "engines/director/lingo/lingo-gr.y"
+#line 694 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
   case 170:
-#line 688 "engines/director/lingo/lingo-gr.y"
+#line 695 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
   case 171:
-#line 689 "engines/director/lingo/lingo-gr.y"
+#line 696 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 172:
-#line 692 "engines/director/lingo/lingo-gr.y"
+#line 699 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
   case 173:
-#line 693 "engines/director/lingo/lingo-gr.y"
+#line 700 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3127 "engines/director/lingo/lingo-gr.cpp"
+#line 3137 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3337,6 +3347,6 @@ yyreturn:
 }
 
 
-#line 696 "engines/director/lingo/lingo-gr.y"
+#line 703 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 8de5e77..74f7b48 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -126,22 +126,33 @@ program: program nl programline
 nl:	'\n' {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 1;
-	}
+
+		g_lingo->_inCond = false; }
+	;
 
 thennl:	tTHENNL {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 1;
-	}
+
+		g_lingo->_inCond = false; }
+	;
 
 nlelse:	tNLELSE {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 5;
-	}
+
+		g_lingo->_inCond = false; }
+	;
 
 nlelsif: tNLELSIF {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 8;
-	}
+
+		g_lingo->_inCond = false; 	}
+	;
+
+then: tTHEN { g_lingo->_inCond = false; }
+	;
 
 programline: /* empty */
 	| defn
@@ -312,7 +323,7 @@ ifstmt:	if cond thennl stmtlist end ENDCLAUSE		{
 		(*g_lingo->_currentScript)[$1 + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf(0, $9 - $1); }
-	| if cond tTHEN begin stmtoneliner end elseifstmtoneliner end elsestmtoneliner end {
+	| if cond then begin stmtoneliner end elseifstmtoneliner end elsestmtoneliner end {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, $4 - $1);
 		WRITE_UINT32(&else1, $6 - $1);
@@ -322,7 +333,7 @@ ifstmt:	if cond thennl stmtlist end ENDCLAUSE		{
 		(*g_lingo->_currentScript)[$1 + 3] = end; 	/* end, if cond fails */
 
 		g_lingo->processIf(0, $10 - $1); }
-	| if cond tTHEN begin stmtoneliner end nlelse begin stmtoneliner end {
+	| if cond then begin stmtoneliner end nlelse begin stmtoneliner end {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, $4 - $1);
 		WRITE_UINT32(&else1, $8 - $1);
@@ -332,7 +343,7 @@ ifstmt:	if cond thennl stmtlist end ENDCLAUSE		{
 		(*g_lingo->_currentScript)[$1 + 3] = end; 	/* end, if cond fails */
 
 		g_lingo->processIf(0, 0); }
-	| if cond tTHEN begin stmtoneliner end {
+	| if cond then begin stmtoneliner end {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, $4 - $1);
 		WRITE_UINT32(&else1, 0);
@@ -356,7 +367,7 @@ elseifstmtoneliner: elseifstmtoneliner elseifstmtoneliner1
 	| elseifstmtoneliner1
 	;
 
-elseifstmtoneliner1:	elseif cond tTHEN begin stmt end {
+elseifstmtoneliner1:	elseif cond then begin stmt end {
 		inst then = 0;
 		WRITE_UINT32(&then, $4 - $1);
 		(*g_lingo->_currentScript)[$1 + 1] = then;	/* thenpart */
@@ -365,13 +376,13 @@ elseifstmtoneliner1:	elseif cond tTHEN begin stmt end {
 	;
 
 elseifstmt1: elseifstmtoneliner
-	| elseif cond tTHEN begin stmtlist end {
+	| elseif cond then begin stmtlist end {
 		inst then = 0;
 		WRITE_UINT32(&then, $5 - $1);
 		(*g_lingo->_currentScript)[$1 + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel($1); }
-	| elseif cond tTHENNL begin stmtlist end {
+	| elseif cond thennl begin stmtlist end {
 		inst then = 0;
 		WRITE_UINT32(&then, $5 - $1);
 		(*g_lingo->_currentScript)[$1 + 1] = then;	/* thenpart */
@@ -379,16 +390,12 @@ elseifstmt1: elseifstmtoneliner
 		g_lingo->codeLabel($1); }
 	;
 
-cond:	begincond expr endcond	{ g_lingo->code1(STOP); }
+cond:	begincond expr	{ g_lingo->code1(STOP); }
 	;
 
 begincond:	  /* nothing */		{ g_lingo->_inCond = true; }
 	;
 
-endcond:	  /* nothing */		{ g_lingo->_inCond = false; }
-	;
-
-
 repeatwhile:	tREPEAT tWHILE		{ $$ = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); }
 	;
 
@@ -425,7 +432,7 @@ stmtlist: /* nothing */		{ $$ = g_lingo->_currentScript->size(); }
 	| stmtlist stmt
 	;
 
-when:	  tWHEN	ID tTHEN	{
+when:	  tWHEN	ID then	{
 		$$ = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
 		g_lingo->codeString($2->c_str());


Commit: d44d322eec8bb7c88d9f6a01c6408f52c90b5b71
    https://github.com/scummvm/scummvm/commit/d44d322eec8bb7c88d9f6a01c6408f52c90b5b71
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-02T20:30:35+01:00

Commit Message:
DIRECTOR: LINGO: Resolve 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 870bebf..457ff22 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -540,7 +540,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  127
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1782
+#define YYLAST   1755
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  106
@@ -549,7 +549,7 @@ union yyalloc
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  173
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  368
+#define YYNSTATES  369
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -609,18 +609,18 @@ static const yytype_uint16 yyprhs[] =
      106,   118,   122,   129,   134,   141,   151,   161,   171,   182,
      193,   200,   201,   205,   208,   210,   213,   215,   222,   224,
      231,   238,   241,   242,   245,   249,   251,   253,   254,   255,
-     256,   259,   262,   266,   268,   270,   272,   274,   276,   278,
-     280,   283,   286,   291,   296,   298,   300,   303,   305,   309,
-     313,   317,   321,   325,   329,   333,   337,   341,   345,   349,
-     353,   357,   360,   364,   368,   372,   376,   379,   382,   386,
-     390,   395,   400,   405,   412,   417,   424,   429,   436,   441,
-     448,   451,   454,   456,   458,   461,   463,   466,   469,   472,
-     474,   477,   480,   482,   485,   490,   495,   502,   507,   510,
-     514,   516,   520,   522,   526,   528,   532,   535,   538,   541,
-     544,   548,   551,   554,   556,   560,   563,   566,   569,   573,
-     576,   577,   581,   582,   591,   594,   595,   604,   613,   620,
-     623,   624,   626,   630,   635,   636,   638,   642,   643,   646,
-     647,   649,   653,   655
+     257,   260,   263,   267,   269,   271,   273,   275,   277,   279,
+     281,   284,   287,   292,   297,   299,   301,   304,   306,   310,
+     314,   318,   322,   326,   330,   334,   338,   342,   346,   350,
+     354,   358,   361,   365,   369,   373,   377,   380,   383,   387,
+     391,   396,   401,   406,   413,   418,   425,   430,   437,   442,
+     449,   452,   455,   457,   459,   462,   464,   467,   470,   473,
+     475,   478,   481,   483,   486,   491,   496,   503,   508,   511,
+     515,   517,   521,   523,   527,   529,   533,   536,   539,   542,
+     545,   549,   552,   555,   557,   561,   564,   567,   570,   574,
+     577,   578,   582,   583,   592,   595,   596,   605,   614,   621,
+     624,   625,   627,   631,   636,   637,   639,   643,   644,   647,
+     648,   650,   654,   656
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -651,47 +651,47 @@ static const yytype_int16 yyrhs[] =
      130,    -1,   120,    -1,   128,   123,   112,   129,   131,   130,
       -1,   128,   123,   109,   129,   131,   130,    -1,   124,   134,
       -1,    -1,    50,    57,    -1,    50,    56,    28,    -1,    41,
-      -1,   111,    -1,    -1,    -1,    -1,   131,   108,    -1,   131,
-     116,    -1,    55,    28,   112,    -1,    87,    -1,    12,    -1,
-      15,    -1,    31,    -1,    29,    -1,   135,    -1,    23,    -1,
-      24,   134,    -1,    25,   154,    -1,    25,    99,   154,   100,
-      -1,    28,    99,   153,   100,    -1,    28,    -1,    13,    -1,
-      14,   134,    -1,   114,    -1,   134,    93,   134,    -1,   134,
-      94,   134,    -1,   134,    95,   134,    -1,   134,    96,   134,
-      -1,   134,    74,   134,    -1,   134,   101,   134,    -1,   134,
-     102,   134,    -1,   134,    69,   134,    -1,   134,    70,   134,
-      -1,   134,    65,   134,    -1,   134,    66,   134,    -1,   134,
-      71,   134,    -1,   134,    72,   134,    -1,    73,   134,    -1,
-     134,    92,   134,    -1,   134,    77,   134,    -1,   134,    78,
-     134,    -1,   134,    79,   134,    -1,    93,   134,    -1,    94,
-     134,    -1,    99,   134,   100,    -1,   103,   153,   104,    -1,
-      84,   134,    85,   134,    -1,    84,   134,    86,   134,    -1,
-      80,   134,    47,   134,    -1,    80,   134,    54,   134,    47,
-     134,    -1,    81,   134,    47,   134,    -1,    81,   134,    54,
-     134,    47,   134,    -1,    82,   134,    47,   134,    -1,    82,
-     134,    54,   134,    47,   134,    -1,    83,   134,    47,   134,
-      -1,    83,   134,    54,   134,    47,   134,    -1,    27,   134,
-      -1,    49,   134,    -1,   140,    -1,   143,    -1,    37,    50,
-      -1,    37,    -1,    39,   137,    -1,    88,   138,    -1,    64,
-     139,    -1,    17,    -1,    19,   134,    -1,    18,   134,    -1,
-      18,    -1,    20,   154,    -1,    20,    99,   154,   100,    -1,
-      90,    99,    28,   100,    -1,    90,    99,    28,   105,   153,
-     100,    -1,    61,   134,    56,   134,    -1,    61,   134,    -1,
-      21,    28,   153,    -1,    28,    -1,   137,   105,    28,    -1,
-      28,    -1,   138,   105,    28,    -1,    28,    -1,   139,   105,
-      28,    -1,    40,    43,    -1,    40,    46,    -1,    40,    48,
-      -1,    40,   141,    -1,    40,   141,   142,    -1,    40,   142,
-      -1,    38,   134,    -1,   134,    -1,    47,    45,   134,    -1,
-      45,   134,    -1,    62,    63,    -1,    62,   141,    -1,    62,
-     141,   142,    -1,    62,   142,    -1,    -1,    33,   144,   153,
-      -1,    -1,    44,    28,   146,   129,   149,   108,   151,   131,
-      -1,    59,    28,    -1,    -1,    60,    28,   147,   129,   149,
-     108,   151,   131,    -1,   148,   129,   149,   108,   151,   131,
-      32,   150,    -1,   148,   129,   149,   108,   151,   131,    -1,
-      89,    28,    -1,    -1,    28,    -1,   149,   105,    28,    -1,
-     149,   108,   105,    28,    -1,    -1,    28,    -1,   150,   105,
-      28,    -1,    -1,    28,   154,    -1,    -1,   134,    -1,   153,
-     105,   134,    -1,   134,    -1,   154,   105,   134,    -1
+      -1,   111,    -1,    -1,    -1,   129,    -1,   131,   108,    -1,
+     131,   116,    -1,    55,    28,   112,    -1,    87,    -1,    12,
+      -1,    15,    -1,    31,    -1,    29,    -1,   135,    -1,    23,
+      -1,    24,   134,    -1,    25,   154,    -1,    25,    99,   154,
+     100,    -1,    28,    99,   153,   100,    -1,    28,    -1,    13,
+      -1,    14,   134,    -1,   114,    -1,   134,    93,   134,    -1,
+     134,    94,   134,    -1,   134,    95,   134,    -1,   134,    96,
+     134,    -1,   134,    74,   134,    -1,   134,   101,   134,    -1,
+     134,   102,   134,    -1,   134,    69,   134,    -1,   134,    70,
+     134,    -1,   134,    65,   134,    -1,   134,    66,   134,    -1,
+     134,    71,   134,    -1,   134,    72,   134,    -1,    73,   134,
+      -1,   134,    92,   134,    -1,   134,    77,   134,    -1,   134,
+      78,   134,    -1,   134,    79,   134,    -1,    93,   134,    -1,
+      94,   134,    -1,    99,   134,   100,    -1,   103,   153,   104,
+      -1,    84,   134,    85,   134,    -1,    84,   134,    86,   134,
+      -1,    80,   134,    47,   134,    -1,    80,   134,    54,   134,
+      47,   134,    -1,    81,   134,    47,   134,    -1,    81,   134,
+      54,   134,    47,   134,    -1,    82,   134,    47,   134,    -1,
+      82,   134,    54,   134,    47,   134,    -1,    83,   134,    47,
+     134,    -1,    83,   134,    54,   134,    47,   134,    -1,    27,
+     134,    -1,    49,   134,    -1,   140,    -1,   143,    -1,    37,
+      50,    -1,    37,    -1,    39,   137,    -1,    88,   138,    -1,
+      64,   139,    -1,    17,    -1,    19,   134,    -1,    18,   134,
+      -1,    18,    -1,    20,   154,    -1,    20,    99,   154,   100,
+      -1,    90,    99,    28,   100,    -1,    90,    99,    28,   105,
+     153,   100,    -1,    61,   134,    56,   134,    -1,    61,   134,
+      -1,    21,    28,   153,    -1,    28,    -1,   137,   105,    28,
+      -1,    28,    -1,   138,   105,    28,    -1,    28,    -1,   139,
+     105,    28,    -1,    40,    43,    -1,    40,    46,    -1,    40,
+      48,    -1,    40,   141,    -1,    40,   141,   142,    -1,    40,
+     142,    -1,    38,   134,    -1,   134,    -1,    47,    45,   134,
+      -1,    45,   134,    -1,    62,    63,    -1,    62,   141,    -1,
+      62,   141,   142,    -1,    62,   142,    -1,    -1,    33,   144,
+     153,    -1,    -1,    44,    28,   146,   129,   149,   108,   151,
+     131,    -1,    59,    28,    -1,    -1,    60,    28,   147,   129,
+     149,   108,   151,   131,    -1,   148,   129,   149,   108,   151,
+     131,    32,   150,    -1,   148,   129,   149,   108,   151,   131,
+      -1,    89,    28,    -1,    -1,    28,    -1,   149,   105,    28,
+      -1,   149,   108,   105,    28,    -1,    -1,    28,    -1,   150,
+     105,    28,    -1,    -1,    28,   154,    -1,    -1,   134,    -1,
+     153,   105,   134,    -1,   134,    -1,   154,   105,   134,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -800,7 +800,7 @@ static const yytype_uint8 yyr2[] =
        5,     4,     4,     5,     1,     1,     1,     1,     5,    10,
       11,     3,     6,     4,     6,     9,     9,     9,    10,    10,
        6,     0,     3,     2,     1,     2,     1,     6,     1,     6,
-       6,     2,     0,     2,     3,     1,     1,     0,     0,     0,
+       6,     2,     0,     2,     3,     1,     1,     0,     0,     1,
        2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
        2,     2,     4,     4,     1,     1,     2,     1,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
@@ -832,7 +832,7 @@ static const yytype_uint8 yydefact[] =
      137,     0,   138,   143,   139,   141,   152,   111,     0,    53,
        0,     0,     0,     0,   154,   155,   128,   146,   147,   149,
      134,   118,    91,     0,     0,     0,     0,     0,   132,   117,
-     159,     0,    96,    97,     0,   170,     0,     1,    10,    59,
+     159,     0,    96,    97,     0,   170,     0,     1,    10,    57,
        0,     0,     0,    58,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,   160,   169,     0,   172,     0,     0,   129,     0,
@@ -840,458 +840,452 @@ static const yytype_uint8 yydefact[] =
        0,     0,    54,     0,     0,     0,     0,     0,     9,    62,
       57,     0,   148,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    98,    99,     0,     2,
-      58,    51,    58,     6,    59,    57,    31,     0,    59,    87,
-      88,    85,    86,    89,    90,    82,    93,    94,    95,    92,
-      78,    79,    80,    81,    83,    84,   161,     0,   124,   173,
-      72,    73,   131,   144,   160,    14,    15,    16,    17,    22,
-      19,     0,     0,    21,    18,   160,   127,   135,   102,     0,
-     104,     0,   106,     0,   108,     0,   100,   101,   133,   125,
-     169,   171,    60,    61,     0,     0,    58,     0,    33,    58,
-       0,   167,     0,    23,    20,     0,     0,     0,     0,     0,
-       0,    28,     0,     0,    57,    58,     0,   162,     0,    59,
-     167,   167,   103,   105,   107,   109,   126,     0,    58,    34,
-       7,    57,     0,    40,    32,   163,   158,    59,    59,    58,
-      59,     0,    58,     8,    56,    58,    48,    46,    44,    52,
-      57,    58,    52,   164,   153,   156,    59,    58,    58,     0,
-      43,     0,    45,     0,     0,    41,     0,   165,   157,    58,
-       0,    37,    35,    36,    57,    57,    58,    57,    58,    57,
-       0,     0,    29,    59,    59,    39,     0,    38,     0,   166,
-      30,    58,    58,    58,    42,    50,    47,    49
+      59,    58,    51,    58,     6,    57,    57,    31,     0,    57,
+      87,    88,    85,    86,    89,    90,    82,    93,    94,    95,
+      92,    78,    79,    80,    81,    83,    84,   161,     0,   124,
+     173,    72,    73,   131,   144,   160,    14,    15,    16,    17,
+      22,    19,     0,     0,    21,    18,   160,   127,   135,   102,
+       0,   104,     0,   106,     0,   108,     0,   100,   101,   133,
+     125,   169,   171,    60,    61,     0,     0,    58,     0,    33,
+      58,     0,   167,     0,    23,    20,     0,     0,     0,     0,
+       0,     0,    28,     0,     0,    57,    58,     0,   162,     0,
+      57,   167,   167,   103,   105,   107,   109,   126,     0,    58,
+      34,     7,    57,     0,    40,    32,   163,   158,    57,    57,
+      58,    57,    59,    58,     8,    56,    58,    48,    46,    44,
+      52,    57,    58,    52,   164,   153,   156,    57,    58,    58,
+       0,    43,     0,    45,     0,     0,    41,     0,   165,   157,
+      58,     0,    37,    35,    36,    57,    57,    58,    57,    58,
+      57,     0,     0,    29,    57,    57,    39,     0,    38,     0,
+     166,    30,    58,    58,    58,    42,    50,    47,    49
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    47,   262,   204,   301,   314,   179,    48,    49,    50,
-     263,    52,   348,   315,   316,   317,   318,   129,   130,    53,
-      54,    55,   322,   152,   206,   200,    56,    57,    58,    59,
+      -1,    47,   263,   205,   302,   315,   179,    48,    49,    50,
+     264,    52,   349,   316,   317,   318,   319,   129,   130,    53,
+      54,    55,   323,   200,   207,   201,    56,    57,    58,    59,
       60,    86,   119,   111,    61,    94,    95,    62,    83,    63,
-     168,   180,    64,   227,   338,   289,    65,   161,    75
+     168,   180,    64,   228,   339,   290,    65,   161,    75
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -288
+#define YYPACT_NINF -283
 static const yytype_int16 yypact[] =
 {
-     355,   -71,  -288,  -288,  1012,  -288,  -288,  1012,  1012,  1052,
-      48,  -288,  1012,  1125,  1012,  1165,  -288,  -288,  -288,    16,
-      74,   898,  -288,    83,  1012,    52,    41,    92,    99,   105,
-    1012,   939,   133,  1012,  1012,  1012,  1012,  1012,  1012,  -288,
-     135,   136,    67,  1012,  1012,  1012,  1012,     5,  -288,  -288,
-    -288,  -288,  -288,  -288,    77,  -288,   815,  1012,  1646,  -288,
-    -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,    68,  1012,
-    1646,  1646,  1646,  1012,  1646,    66,  1012,  1646,  1012,    66,
-    1646,  1012,    66,  1012,  -288,  -288,    89,  1012,  -288,  1012,
-    -288,   134,  -288,  1646,    38,  -288,  -288,  1200,   153,  -288,
-     -39,  1012,   -32,   130,  -288,  -288,  1540,  -288,    38,  -288,
-    -288,    90,    76,  1234,  1268,  1302,  1336,  1574,  -288,    91,
-    -288,   170,    76,    76,  1608,  1646,    14,  -288,   447,  -288,
-    1012,  1012,    71,  -288,   791,  1012,  1012,  1012,  1012,  1012,
-    1012,  1012,  1012,  1012,  1012,  1012,  1012,  1012,  1012,  1012,
-    1012,  1012,   171,  1012,  1200,  1608,   -74,  1012,    95,   -43,
-    1608,   -35,    95,   174,  1646,  1646,  1012,  -288,  -288,   127,
-    1012,  1012,  -288,  1012,  1012,  1506,  1012,  1012,  -288,  -288,
-    -288,  1012,  -288,   176,  1012,  1012,  1012,  1012,  1012,  1012,
-    1012,  1012,  1012,  1012,   179,    -4,  -288,  -288,  1012,  -288,
-     631,  1646,  1646,  -288,  -288,  -288,  -288,  1012,  -288,    -3,
-      -3,    -3,    -3,  1680,  1680,    76,  1646,    -3,    -3,    20,
-      30,    30,    76,    76,  1646,  1646,  -288,   -38,  -288,  1646,
-    -288,  -288,  -288,  1646,   171,  -288,  -288,  1646,  1646,  1646,
-    1646,  1012,  1012,  1646,  1646,   171,  1646,  -288,  1646,  1370,
-    1646,  1404,  1646,  1438,  1646,  1472,  1646,  1646,  -288,  -288,
-    1012,  1646,  -288,  -288,   177,    27,   631,   815,  1646,   631,
-     182,   106,   -38,  1646,  1646,   -38,  1012,  1012,  1012,  1012,
-      12,  -288,   159,  1012,    -8,  -288,   183,  -288,   186,  -288,
-     106,   106,  1646,  1646,  1646,  1646,  -288,  1012,  1646,  -288,
-    -288,     8,   180,   -11,  -288,  -288,   539,  -288,  -288,  1646,
-    -288,   815,   631,  -288,  -288,   180,   180,  -288,  -288,  -288,
-    -288,   180,  -288,   191,   631,   631,  -288,   631,  -288,   189,
-    -288,   192,  -288,    71,   815,   167,   130,  -288,   121,   631,
-     195,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-     200,   197,  -288,  -288,   723,  -288,   815,  -288,   723,  -288,
-    -288,   631,  -288,   631,  -288,  -288,  -288,  -288
+     356,   -49,  -283,  -283,  1013,  -283,  -283,  1013,  1013,  1053,
+      23,  -283,  1013,  1126,  1013,  1166,  -283,  -283,  -283,    13,
+      27,   899,  -283,    41,  1013,    49,    48,    57,    68,    90,
+    1013,   940,    92,  1013,  1013,  1013,  1013,  1013,  1013,  -283,
+      96,    99,    56,  1013,  1013,  1013,  1013,     5,  -283,  -283,
+    -283,  -283,  -283,  -283,    71,  -283,   816,  1013,  1619,  -283,
+    -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,    64,  1013,
+    1619,  1619,  1619,  1013,  1619,    59,  1013,  1619,  1013,    59,
+    1619,  1013,    59,  1013,  -283,  -283,    61,  1013,  -283,  1013,
+    -283,   122,  -283,  1619,    36,  -283,  -283,   157,   140,  -283,
+     -39,  1013,   -38,   119,  -283,  -283,  1513,  -283,    36,  -283,
+    -283,    69,    -7,  1207,  1241,  1275,  1309,  1547,  -283,    72,
+    -283,   150,    -7,    -7,  1581,  1619,    18,  -283,   448,  -283,
+    1013,  1013,   101,  -283,   792,  1013,  1013,  1013,  1013,  1013,
+    1013,  1013,  1013,  1013,  1013,  1013,  1013,  1013,  1013,  1013,
+    1013,  1013,   151,  1013,   157,  1581,   -74,  1013,    76,     8,
+    1581,    10,    76,   165,  1619,  1619,  1013,  -283,  -283,   130,
+    1013,  1013,  -283,  1013,  1013,  1479,  1013,  1013,  -283,  -283,
+    -283,  1013,  -283,   167,  1013,  1013,  1013,  1013,  1013,  1013,
+    1013,  1013,  1013,  1013,   168,    11,  -283,  -283,  1013,  -283,
+    -283,   632,  1619,  1619,  -283,  -283,  -283,  -283,  1013,  -283,
+      -3,    -3,    -3,    -3,  1653,  1653,    -7,  1619,    -3,    -3,
+     -36,    30,    30,    -7,    -7,  1619,  1619,  -283,     4,  -283,
+    1619,  -283,  -283,  -283,  1619,   151,  -283,  -283,  1619,  1619,
+    1619,  1619,  1013,  1013,  1619,  1619,   151,  1619,  -283,  1619,
+    1343,  1619,  1377,  1619,  1411,  1619,  1445,  1619,  1619,  -283,
+    -283,  1013,  1619,  -283,  -283,   166,    -6,   632,   816,  1619,
+     632,   177,   103,     4,  1619,  1619,     4,  1013,  1013,  1013,
+    1013,    12,  -283,   156,  1013,    -8,  -283,   179,  -283,   184,
+    -283,   103,   103,  1619,  1619,  1619,  1619,  -283,  1013,  1619,
+    -283,  -283,  -283,   178,   -11,  -283,  -283,   540,  -283,  -283,
+    1619,  -283,   816,   632,  -283,  -283,   178,   178,  -283,  -283,
+    -283,  -283,   178,  -283,   187,   632,   632,  -283,   632,  -283,
+     185,  -283,   186,  -283,   101,   816,   158,   119,  -283,   115,
+     632,   189,  -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,
+    -283,   197,   198,  -283,  -283,   724,  -283,   816,  -283,   724,
+    -283,  -283,   632,  -283,   632,  -283,  -283,  -283,  -283
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -288,  -288,    17,  -103,  -287,  -288,  -128,   103,  -288,   -55,
-       0,  -288,  -288,  -288,   -70,  -211,   -83,   -53,  -288,  -288,
-    -288,  -288,  -264,  -127,     1,   -46,  -288,  -288,    -1,    65,
-    -288,  -288,  -288,  -288,  -288,   204,   -21,  -288,  -288,  -288,
-    -288,  -288,  -288,  -217,  -288,  -131,  -288,   -37,     6
+    -283,  -283,    17,   -97,  -282,  -283,  -128,   111,  -283,   -55,
+       0,  -283,  -283,  -283,   -64,  -203,   -73,   -53,  -283,  -283,
+    -283,  -283,  -276,   -47,     1,  -108,  -283,  -283,    -1,    75,
+    -283,  -283,  -283,  -283,  -283,   217,   -21,  -283,  -283,  -283,
+    -283,  -283,  -283,  -168,  -283,  -131,  -283,   -37,     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 -60
+#define YYTABLE_NINF -11
 static const yytype_int16 yytable[] =
 {
-      51,   133,   132,    70,   205,   127,    71,    72,    74,   126,
-     109,    77,    74,    80,    74,   173,   320,   272,    67,    79,
-      93,    82,   176,    97,   299,   313,   228,    66,   275,   106,
-      93,   157,   112,   113,   114,   115,   116,   117,   319,   158,
-     -59,   234,   122,   123,   124,   125,   162,   300,   347,   -59,
-     300,   319,   174,   245,   100,   101,   134,   230,   -59,   177,
-      66,   282,   157,   -59,   128,   231,    84,   270,   154,   102,
-     198,   141,   155,   167,   142,   125,    76,   155,   267,   156,
-     160,   283,   125,    89,   159,    91,   164,   182,   165,   145,
-     146,   147,   148,   149,   141,   -59,   259,   142,   150,   151,
-     175,   260,    85,    66,   141,   332,   -59,   142,    98,    99,
-     332,    96,   296,   146,   147,   148,   149,   198,   197,   198,
-     103,   150,   151,   178,   203,   148,   149,   104,    51,   201,
-     202,   150,   151,   105,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   208,   125,   142,    14,   235,   229,   302,   266,   307,
-     308,   110,   269,   118,   120,   233,   121,   153,   131,   237,
-     238,   157,   239,   240,   311,   243,   244,   150,   151,   166,
-     246,   172,   178,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,   334,   163,   183,   194,   261,   195,   226,
-     198,   264,   232,   265,   247,   345,   268,   258,   349,   281,
-     287,   288,   285,   297,   305,   304,   313,   353,   354,   337,
-     356,   342,   358,   280,   343,   300,   350,   352,   359,   360,
-     344,   199,   330,   321,   236,   108,     0,     0,     0,     0,
-     273,   274,     0,   306,   271,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   312,   328,     0,     0,   125,
-       0,   324,   325,     0,   327,     0,   333,   284,     0,   336,
-     286,     0,     0,     0,     0,   292,   293,   294,   295,   346,
-     339,     0,   298,     0,     0,     0,   303,     0,     0,   290,
-       0,     0,   291,     0,     0,     0,   309,     0,     0,   310,
-       0,   364,     0,     0,     0,     0,     0,   361,   363,     0,
-     326,     0,     0,   329,     0,     0,   331,     0,     0,     0,
-       0,     0,   335,     0,     0,     0,     0,     0,   340,   341,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     351,     0,     0,     0,     0,     0,     0,   355,     0,   357,
-       0,     0,     0,     0,   362,   -10,     1,     0,   362,     0,
-       0,     0,   365,   366,   367,     0,     0,     2,     3,     4,
-       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
-      13,     0,    14,    15,    16,     0,    17,     0,    18,     0,
-       0,     0,    19,     0,    20,    21,    22,     0,     0,    23,
-       0,     0,     0,     0,    24,    25,    26,     0,     0,     0,
-      27,     0,     0,     0,    28,    29,    30,    31,     0,    32,
-       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
-       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
-       0,     0,    39,    40,    41,    42,     0,     0,    43,    44,
-       0,     0,     0,   -10,    45,     0,     0,     0,    46,     2,
-       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
-      11,    12,    13,     0,    14,    15,    16,     0,    17,     0,
-      18,     0,     0,     0,    19,     0,    20,    21,    22,     0,
-       0,    23,     0,     0,     0,     0,    24,    25,    26,     0,
-       0,     0,    27,     0,     0,     0,    28,    29,    30,    31,
-       0,    32,     0,     0,     0,     0,     0,     0,     0,     0,
-      33,     0,     0,     0,     0,     0,     0,    34,    35,    36,
-      37,    38,     0,     0,    39,    40,    41,    42,     0,     0,
-      43,    44,     0,     0,     0,     0,    45,     0,     0,     0,
-      46,     2,     3,     4,     5,     0,     6,     7,     8,     9,
-      10,     0,    11,    12,    13,     0,    14,    68,    16,     0,
-      17,   323,    18,     0,     0,     0,    19,     0,    20,    21,
-      22,     0,     0,     0,     0,     0,     0,     0,    24,    25,
-      26,     0,     0,     0,    27,     0,     0,     0,     0,     0,
-      30,    31,     0,    32,     0,     0,     0,     0,     0,     0,
-       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
-      35,    36,    37,    38,     0,     0,    39,    40,     0,    42,
-       0,     0,    43,    44,     0,     0,     0,    66,    45,     0,
-       0,     0,    46,     2,     3,     4,     5,     0,     6,     7,
-       8,     9,    10,     0,    11,    12,    13,     0,    14,    68,
-      16,     0,    17,     0,    18,     0,     0,     0,    19,     0,
-      20,    21,    22,     0,     0,     0,     0,     0,     0,     0,
-      24,    25,    26,     0,     0,     0,    27,     0,     0,     0,
-       0,     0,    30,    31,     0,    32,     0,     0,     0,     0,
-       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
-       0,    34,    35,    36,    37,    38,     0,     0,    39,    40,
-       0,    42,     0,     0,    43,    44,     0,     0,     0,    66,
-      45,     0,     0,     0,    46,     2,     3,     4,     5,     0,
-       6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
-      14,    68,    16,     0,    17,     0,    18,     0,     0,     0,
-      19,     0,    20,    21,    22,     0,     0,     0,     0,     0,
-       0,     0,    24,    25,    26,     0,     0,     0,    27,     0,
-       0,     0,     0,     0,    30,    31,     0,    32,     0,     0,
-       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
-       0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
-      39,    40,     0,    42,     0,     0,    43,    44,     0,     0,
-       0,     0,    45,     0,     0,     0,    46,     2,     3,     4,
-       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
-      13,     0,    14,    68,    16,   207,    17,     0,    18,     0,
-       0,     0,    19,     0,    20,    21,   135,   136,     0,     0,
-     137,   138,   139,   140,    24,   141,    26,     0,   142,   143,
-     144,     0,     0,     0,     0,     0,    30,    31,     0,    32,
-       0,     0,     0,   145,   146,   147,   148,   149,    33,    66,
-       0,     0,   150,   151,     0,    34,    35,    36,    37,    38,
-       0,     0,     0,    40,     0,    42,     0,     0,    43,    44,
-       2,     3,     4,     5,    45,     0,     0,     0,    46,     0,
-       0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
-       0,     0,     0,     0,     0,     0,    87,     0,     0,     0,
-       0,    88,     0,    89,    90,    91,    92,    69,     0,    26,
-       0,     2,     3,     4,     5,     0,     0,     0,     0,     0,
-       0,     0,    11,    12,    13,     0,    14,    68,    16,     0,
-      17,    33,     0,     0,     0,     0,     0,    87,    34,    35,
-      36,    37,    38,     0,    89,     0,    91,     0,    69,     0,
-      26,    43,    44,     0,     0,     0,     0,    45,     0,     0,
-       0,    46,   107,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
-      35,    36,    37,    38,     2,     3,     4,     5,     0,     0,
-       0,     0,    43,    44,     0,    11,    12,    13,    45,    14,
-      68,    16,    46,    17,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    69,     0,    26,     2,     3,     4,     5,     0,     0,
-       0,     0,     0,     0,     0,    11,    12,    13,     0,    14,
-      68,    16,     0,    17,     0,    33,     0,     0,     0,     0,
-       0,     0,    34,    35,    36,    37,    38,     0,     0,     0,
-       0,    69,     0,    26,     0,    43,    44,     0,     0,     0,
-       0,    45,     0,     0,     0,    46,     0,     0,     0,     0,
+      51,   133,   132,    70,   206,   127,    71,    72,    74,   126,
+     109,    77,    74,    80,    74,   173,   176,   152,    67,    79,
+      93,    82,   321,    97,   300,   314,   229,   320,   283,   106,
+      93,   157,   112,   113,   114,   115,   116,   117,   141,   158,
+     320,   142,   122,   123,   124,   125,   162,   301,   284,    66,
+     301,    76,   174,   177,   348,    85,   134,   146,   147,   148,
+     149,   100,   101,    84,   128,   150,   151,   273,   154,    96,
+     142,   141,   155,   167,   142,   125,   102,   155,   276,   156,
+     160,    89,   125,    91,   159,   103,   164,   182,   165,   145,
+     146,   147,   148,   149,   150,   151,   104,   267,   150,   151,
+     175,   270,    66,    66,   141,    98,    99,   142,   231,   271,
+     232,   260,   297,   157,   333,   198,   261,   198,   105,   333,
+     110,   235,   197,   198,   118,   148,   149,   120,    51,   202,
+     203,   150,   151,   246,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   209,   125,   178,   204,   121,   230,    14,   236,   268,
+     308,   309,   131,   153,   157,   234,   163,   166,   172,   238,
+     239,   178,   240,   241,   183,   244,   245,   194,   195,   227,
+     247,   198,   307,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   233,   313,   248,   259,   262,   282,   169,
+     325,   326,   265,   328,   266,   288,   346,   269,   289,   350,
+     298,   305,   306,   286,   314,   338,   301,   343,   344,   340,
+     351,   353,   135,   136,   281,   360,   137,   138,   139,   140,
+     361,   141,   170,   171,   142,   143,   144,   345,   303,   199,
+     322,   274,   275,   331,   237,   272,   362,   364,   108,   145,
+     146,   147,   148,   149,     0,   312,     0,   329,   150,   151,
+     125,     0,     0,     0,     0,     0,     0,   334,   285,     0,
+     337,   287,     0,     0,   335,     0,   293,   294,   295,   296,
+     347,     0,     0,   299,     0,     0,     0,   304,     0,     0,
+     291,     0,     0,   292,     0,     0,     0,   310,   354,   355,
+     311,   357,   365,   359,     0,     0,     0,     0,     0,     0,
+       0,   327,     0,     0,   330,     0,     0,   332,     0,     0,
+       0,     0,     0,   336,     0,     0,     0,     0,     0,   341,
+     342,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   352,     0,     0,     0,     0,     0,     0,   356,     0,
+     358,     0,     0,     0,     0,   363,   -10,     1,     0,   363,
+       0,     0,     0,   366,   367,   368,     0,     0,     2,     3,
+       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
+      12,    13,     0,    14,    15,    16,     0,    17,     0,    18,
+       0,     0,     0,    19,     0,    20,    21,    22,     0,     0,
+      23,     0,     0,     0,     0,    24,    25,    26,     0,     0,
+       0,    27,     0,     0,     0,    28,    29,    30,    31,     0,
+      32,     0,     0,     0,     0,     0,     0,     0,     0,    33,
+       0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
+      38,     0,     0,    39,    40,    41,    42,     0,     0,    43,
+      44,     0,     0,     0,   -10,    45,     0,     0,     0,    46,
+       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
+       0,    11,    12,    13,     0,    14,    15,    16,     0,    17,
+       0,    18,     0,     0,     0,    19,     0,    20,    21,    22,
+       0,     0,    23,     0,     0,     0,     0,    24,    25,    26,
+       0,     0,     0,    27,     0,     0,     0,    28,    29,    30,
+      31,     0,    32,     0,     0,     0,     0,     0,     0,     0,
+       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
+      36,    37,    38,     0,     0,    39,    40,    41,    42,     0,
+       0,    43,    44,     0,     0,     0,     0,    45,     0,     0,
+       0,    46,     2,     3,     4,     5,     0,     6,     7,     8,
+       9,    10,     0,    11,    12,    13,     0,    14,    68,    16,
+       0,    17,   324,    18,     0,     0,     0,    19,     0,    20,
+      21,    22,     0,     0,     0,     0,     0,     0,     0,    24,
+      25,    26,     0,     0,     0,    27,     0,     0,     0,     0,
+       0,    30,    31,     0,    32,     0,     0,     0,     0,     0,
+       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
+      34,    35,    36,    37,    38,     0,     0,    39,    40,     0,
+      42,     0,     0,    43,    44,     0,     0,     0,    66,    45,
+       0,     0,     0,    46,     2,     3,     4,     5,     0,     6,
+       7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
+      68,    16,     0,    17,     0,    18,     0,     0,     0,    19,
+       0,    20,    21,    22,     0,     0,     0,     0,     0,     0,
+       0,    24,    25,    26,     0,     0,     0,    27,     0,     0,
+       0,     0,     0,    30,    31,     0,    32,     0,     0,     0,
        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
-       0,     0,    34,    35,    36,    37,    38,     2,     3,     4,
-       5,     0,     0,     0,     0,    43,    44,     0,    11,    12,
-      13,    73,    14,    68,    16,    46,    17,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    69,     0,    26,     2,     3,     4,
-       5,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-      13,     0,    14,    68,    16,     0,    17,     0,    33,     0,
-       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
-       0,     0,     0,     0,    69,     0,    26,     0,    43,    44,
-       0,     0,     0,     0,    78,     0,     0,     0,    46,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
-       0,     0,   169,     0,     0,    34,    35,    36,    37,    38,
-       0,     0,     0,     0,     0,     0,     0,     0,    43,    44,
-       0,     0,     0,     0,    81,   135,   136,     0,    46,   137,
-     138,   139,   140,     0,   141,   170,   171,   142,   143,   144,
-       0,   184,     0,     0,     0,     0,     0,     0,   185,     0,
-       0,     0,   145,   146,   147,   148,   149,     0,     0,   135,
-     136,   150,   151,   137,   138,   139,   140,     0,   141,     0,
-       0,   142,   143,   144,     0,   186,     0,     0,     0,     0,
-       0,     0,   187,     0,     0,     0,   145,   146,   147,   148,
-     149,     0,     0,   135,   136,   150,   151,   137,   138,   139,
-     140,     0,   141,     0,     0,   142,   143,   144,     0,   188,
-       0,     0,     0,     0,     0,     0,   189,     0,     0,     0,
-     145,   146,   147,   148,   149,     0,     0,   135,   136,   150,
-     151,   137,   138,   139,   140,     0,   141,     0,     0,   142,
-     143,   144,     0,   190,     0,     0,     0,     0,     0,     0,
-     191,     0,     0,     0,   145,   146,   147,   148,   149,     0,
-       0,   135,   136,   150,   151,   137,   138,   139,   140,     0,
-     141,     0,     0,   142,   143,   144,     0,   276,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   145,   146,
-     147,   148,   149,     0,     0,   135,   136,   150,   151,   137,
-     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
-       0,   277,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   145,   146,   147,   148,   149,     0,     0,   135,
-     136,   150,   151,   137,   138,   139,   140,     0,   141,     0,
-       0,   142,   143,   144,     0,   278,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   145,   146,   147,   148,
-     149,     0,     0,   135,   136,   150,   151,   137,   138,   139,
-     140,     0,   141,     0,     0,   142,   143,   144,     0,   279,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     145,   146,   147,   148,   149,     0,     0,   135,   136,   150,
-     151,   137,   138,   139,   140,     0,   141,     0,     0,   142,
-     143,   144,     0,     0,     0,     0,     0,     0,     0,     0,
-     241,     0,     0,     0,   145,   146,   147,   148,   149,     0,
-       0,   135,   136,   150,   151,   137,   138,   139,   140,     0,
-     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   181,   242,   145,   146,
-     147,   148,   149,     0,     0,   135,   136,   150,   151,   137,
-     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
+       0,     0,    34,    35,    36,    37,    38,     0,     0,    39,
+      40,     0,    42,     0,     0,    43,    44,     0,     0,     0,
+      66,    45,     0,     0,     0,    46,     2,     3,     4,     5,
+       0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
+       0,    14,    68,    16,     0,    17,     0,    18,     0,     0,
+       0,    19,     0,    20,    21,    22,     0,     0,     0,     0,
+       0,     0,     0,    24,    25,    26,     0,     0,     0,    27,
+       0,     0,     0,     0,     0,    30,    31,     0,    32,     0,
+       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
+       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
+       0,    39,    40,     0,    42,     0,     0,    43,    44,     0,
+       0,     0,     0,    45,     0,     0,     0,    46,     2,     3,
+       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
+      12,    13,     0,    14,    68,    16,   208,    17,     0,    18,
+       0,     0,     0,    19,     0,    20,    21,   135,   136,     0,
+       0,   137,   138,   139,   140,    24,   141,    26,     0,   142,
+     143,   144,     0,     0,     0,     0,     0,    30,    31,     0,
+      32,     0,     0,     0,   145,   146,   147,   148,   149,    33,
+      66,     0,     0,   150,   151,     0,    34,    35,    36,    37,
+      38,     0,     0,     0,    40,     0,    42,     0,     0,    43,
+      44,     2,     3,     4,     5,    45,     0,     0,     0,    46,
+       0,     0,    11,    12,    13,     0,    14,    68,    16,     0,
+      17,     0,     0,     0,     0,     0,     0,    87,     0,     0,
+       0,     0,    88,     0,    89,    90,    91,    92,    69,     0,
+      26,     0,     2,     3,     4,     5,     0,     0,     0,     0,
+       0,     0,     0,    11,    12,    13,     0,    14,    68,    16,
+       0,    17,    33,     0,     0,     0,     0,     0,    87,    34,
+      35,    36,    37,    38,     0,    89,     0,    91,     0,    69,
+       0,    26,    43,    44,     0,     0,     0,     0,    45,     0,
+       0,     0,    46,   107,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
+      34,    35,    36,    37,    38,     2,     3,     4,     5,     0,
+       0,     0,     0,    43,    44,     0,    11,    12,    13,    45,
+      14,    68,    16,    46,    17,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   145,   146,   147,   148,   149,     0,     0,   135,
-     136,   150,   151,   137,   138,   139,   140,     0,   141,     0,
-       0,   142,   143,   144,     0,     0,     0,     0,     0,   192,
-     193,     0,     0,     0,     0,     0,   145,   146,   147,   148,
-     149,     0,     0,   135,   136,   150,   151,   137,   138,   139,
-     140,     0,   141,     0,     0,   142,   143,   144,     0,     0,
+       0,     0,    69,     0,    26,     2,     3,     4,     5,     0,
+       0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
+      14,    68,    16,     0,    17,     0,    33,     0,     0,     0,
+       0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
+       0,     0,    69,     0,    26,     0,    43,    44,     0,     0,
+       0,     0,    45,     0,     0,     0,    46,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
+       0,     0,     0,    34,    35,    36,    37,    38,     2,     3,
+       4,     5,     0,     0,     0,     0,    43,    44,     0,    11,
+      12,    13,    73,    14,    68,    16,    46,    17,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     145,   146,   147,   148,   149,     0,     0,     0,   196,   150,
-     151,   135,   136,     0,     0,   137,   138,   139,   140,     0,
-     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   145,   146,
-     147,   148,   149,     0,     0,   135,   136,   150,   151,   137,
-     138,     0,     0,     0,   141,     0,     0,   142,   143,   144,
+       0,     0,     0,     0,     0,    69,     0,    26,     2,     3,
+       4,     5,     0,     0,     0,     0,     0,     0,     0,    11,
+      12,    13,     0,    14,    68,    16,     0,    17,     0,    33,
+       0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
+      38,     0,     0,     0,     0,    69,     0,    26,     0,    43,
+      44,     0,     0,     0,     0,    78,     0,     0,     0,    46,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
+       0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
+      38,     0,     0,     0,   184,     0,     0,     0,     0,    43,
+      44,   185,     0,     0,     0,    81,     0,     0,     0,    46,
+       0,     0,   135,   136,     0,     0,   137,   138,   139,   140,
+       0,   141,     0,     0,   142,   143,   144,     0,   186,     0,
+       0,     0,     0,     0,     0,   187,     0,     0,     0,   145,
+     146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
+     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
+     144,     0,   188,     0,     0,     0,     0,     0,     0,   189,
+       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
+     135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
+       0,     0,   142,   143,   144,     0,   190,     0,     0,     0,
+       0,     0,     0,   191,     0,     0,     0,   145,   146,   147,
+     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
+     277,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
+     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
+     142,   143,   144,     0,   278,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
+       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
+       0,   141,     0,     0,   142,   143,   144,     0,   279,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   145,
+     146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
+     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
+     144,     0,   280,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
+     135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
+       0,     0,   142,   143,   144,     0,     0,     0,     0,     0,
+       0,     0,     0,   242,     0,     0,     0,   145,   146,   147,
+     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   181,
+     243,   145,   146,   147,   148,   149,     0,     0,   135,   136,
+     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
+     142,   143,   144,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
+       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
+       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
+       0,     0,   192,   193,     0,     0,     0,     0,     0,   145,
+     146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
+     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
+     144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
+       0,   196,   150,   151,   135,   136,     0,     0,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   145,   146,   147,   148,   149,     0,     0,     0,
-       0,   150,   151
+       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
+     150,   151,   137,   138,     0,     0,     0,   141,     0,     0,
+     142,   143,   144,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
+       0,     0,     0,     0,   150,   151
 };
 
 static const yytype_int16 yycheck[] =
 {
        0,    56,    55,     4,   132,     0,     7,     8,     9,    46,
-      31,    12,    13,    14,    15,    54,   303,   234,     1,    13,
-      21,    15,    54,    24,    32,    36,   100,    98,   245,    30,
-      31,   105,    33,    34,    35,    36,    37,    38,   302,    76,
-      32,   168,    43,    44,    45,    46,    83,    58,   335,    41,
-      58,   315,    91,   180,    13,    14,    57,   100,    50,    91,
-      98,    34,   105,    55,    47,   100,    50,   105,    69,    28,
-     105,    74,    73,    94,    77,    76,    28,    78,   205,    73,
-      81,    54,    83,    45,    78,    47,    87,   108,    89,    92,
-      93,    94,    95,    96,    74,    87,   100,    77,   101,   102,
-     101,   105,    28,    98,    74,   316,    98,    77,    56,    57,
-     321,    28,   100,    93,    94,    95,    96,   105,   104,   105,
-      28,   101,   102,    52,    53,    95,    96,    28,   128,   130,
-     131,   101,   102,    28,   135,   136,   137,   138,   139,   140,
+      31,    12,    13,    14,    15,    54,    54,    64,     1,    13,
+      21,    15,   304,    24,    32,    36,   100,   303,    34,    30,
+      31,   105,    33,    34,    35,    36,    37,    38,    74,    76,
+     316,    77,    43,    44,    45,    46,    83,    58,    54,    98,
+      58,    28,    91,    91,   336,    28,    57,    93,    94,    95,
+      96,    13,    14,    50,    47,   101,   102,   235,    69,    28,
+      77,    74,    73,    94,    77,    76,    28,    78,   246,    73,
+      81,    45,    83,    47,    78,    28,    87,   108,    89,    92,
+      93,    94,    95,    96,   101,   102,    28,   205,   101,   102,
+     101,   209,    98,    98,    74,    56,    57,    77,   100,   105,
+     100,   100,   100,   105,   317,   105,   105,   105,    28,   322,
+      28,   168,   104,   105,    28,    95,    96,    28,   128,   130,
+     131,   101,   102,   180,   135,   136,   137,   138,   139,   140,
      141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   134,   153,    77,    27,    28,   157,   284,   204,   290,
-     291,    28,   208,    28,    28,   166,    99,    99,    91,   170,
-     171,   105,   173,   174,   301,   176,   177,   101,   102,    45,
-     181,    28,    52,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   320,   105,   105,   105,   198,    28,    28,
-     105,   200,    28,   202,    28,   333,   207,    28,   336,    32,
-      28,   105,   267,    54,    28,    32,    36,   344,   345,    28,
-     347,    32,   349,   260,    32,    58,   105,    32,    28,    32,
-     333,   128,   315,   303,   169,    31,    -1,    -1,    -1,    -1,
-     241,   242,    -1,   289,   227,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   301,   311,    -1,    -1,   260,
-      -1,   307,   308,    -1,   310,    -1,   319,   266,    -1,   322,
-     269,    -1,    -1,    -1,    -1,   276,   277,   278,   279,   334,
-     326,    -1,   283,    -1,    -1,    -1,   285,    -1,    -1,   272,
-      -1,    -1,   275,    -1,    -1,    -1,   297,    -1,    -1,   298,
-      -1,   356,    -1,    -1,    -1,    -1,    -1,   353,   354,    -1,
-     309,    -1,    -1,   312,    -1,    -1,   315,    -1,    -1,    -1,
-      -1,    -1,   321,    -1,    -1,    -1,    -1,    -1,   327,   328,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     339,    -1,    -1,    -1,    -1,    -1,    -1,   346,    -1,   348,
-      -1,    -1,    -1,    -1,   354,     0,     1,    -1,   358,    -1,
-      -1,    -1,   361,   362,   363,    -1,    -1,    12,    13,    14,
-      15,    -1,    17,    18,    19,    20,    21,    -1,    23,    24,
-      25,    -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,
-      -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,    44,
-      -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,
-      55,    -1,    -1,    -1,    59,    60,    61,    62,    -1,    64,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
-      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      -1,    -1,    87,    88,    89,    90,    -1,    -1,    93,    94,
-      -1,    -1,    -1,    98,    99,    -1,    -1,    -1,   103,    12,
-      13,    14,    15,    -1,    17,    18,    19,    20,    21,    -1,
-      23,    24,    25,    -1,    27,    28,    29,    -1,    31,    -1,
-      33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,
-      -1,    44,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,
-      -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,    62,
-      -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
-      83,    84,    -1,    -1,    87,    88,    89,    90,    -1,    -1,
-      93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,
-     103,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
-      21,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
-      31,    32,    33,    -1,    -1,    -1,    37,    -1,    39,    40,
-      41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50,
-      51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,
-      61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,
-      81,    82,    83,    84,    -1,    -1,    87,    88,    -1,    90,
-      -1,    -1,    93,    94,    -1,    -1,    -1,    98,    99,    -1,
-      -1,    -1,   103,    12,    13,    14,    15,    -1,    17,    18,
-      19,    20,    21,    -1,    23,    24,    25,    -1,    27,    28,
-      29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,
-      39,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,
-      -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,
-      -1,    80,    81,    82,    83,    84,    -1,    -1,    87,    88,
-      -1,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,    98,
-      99,    -1,    -1,    -1,   103,    12,    13,    14,    15,    -1,
-      17,    18,    19,    20,    21,    -1,    23,    24,    25,    -1,
-      27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
-      37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,
-      -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,
-      -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,
-      87,    88,    -1,    90,    -1,    -1,    93,    94,    -1,    -1,
-      -1,    -1,    99,    -1,    -1,    -1,   103,    12,    13,    14,
-      15,    -1,    17,    18,    19,    20,    21,    -1,    23,    24,
-      25,    -1,    27,    28,    29,    54,    31,    -1,    33,    -1,
-      -1,    -1,    37,    -1,    39,    40,    65,    66,    -1,    -1,
-      69,    70,    71,    72,    49,    74,    51,    -1,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,
-      -1,    -1,    -1,    92,    93,    94,    95,    96,    73,    98,
-      -1,    -1,   101,   102,    -1,    80,    81,    82,    83,    84,
-      -1,    -1,    -1,    88,    -1,    90,    -1,    -1,    93,    94,
-      12,    13,    14,    15,    99,    -1,    -1,    -1,   103,    -1,
+     151,   134,   153,    52,    53,    99,   157,    27,    28,   206,
+     291,   292,    91,    99,   105,   166,   105,    45,    28,   170,
+     171,    52,   173,   174,   105,   176,   177,   105,    28,    28,
+     181,   105,   290,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,    28,   302,    28,    28,   198,    32,    42,
+     308,   309,   201,   311,   203,    28,   334,   208,   105,   337,
+      54,    32,    28,   268,    36,    28,    58,    32,    32,   327,
+     105,    32,    65,    66,   261,    28,    69,    70,    71,    72,
+      32,    74,    75,    76,    77,    78,    79,   334,   285,   128,
+     304,   242,   243,   316,   169,   228,   354,   355,    31,    92,
+      93,    94,    95,    96,    -1,   302,    -1,   312,   101,   102,
+     261,    -1,    -1,    -1,    -1,    -1,    -1,   320,   267,    -1,
+     323,   270,    -1,    -1,   321,    -1,   277,   278,   279,   280,
+     335,    -1,    -1,   284,    -1,    -1,    -1,   286,    -1,    -1,
+     273,    -1,    -1,   276,    -1,    -1,    -1,   298,   345,   346,
+     299,   348,   357,   350,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   310,    -1,    -1,   313,    -1,    -1,   316,    -1,    -1,
+      -1,    -1,    -1,   322,    -1,    -1,    -1,    -1,    -1,   328,
+     329,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   340,    -1,    -1,    -1,    -1,    -1,    -1,   347,    -1,
+     349,    -1,    -1,    -1,    -1,   355,     0,     1,    -1,   359,
+      -1,    -1,    -1,   362,   363,   364,    -1,    -1,    12,    13,
+      14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
+      24,    25,    -1,    27,    28,    29,    -1,    31,    -1,    33,
+      -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,
+      44,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
+      -1,    55,    -1,    -1,    -1,    59,    60,    61,    62,    -1,
+      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
+      -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
+      84,    -1,    -1,    87,    88,    89,    90,    -1,    -1,    93,
+      94,    -1,    -1,    -1,    98,    99,    -1,    -1,    -1,   103,
+      12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
       -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
-      -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,
-      -1,    43,    -1,    45,    46,    47,    48,    49,    -1,    51,
-      -1,    12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
-      31,    73,    -1,    -1,    -1,    -1,    -1,    38,    80,    81,
-      82,    83,    84,    -1,    45,    -1,    47,    -1,    49,    -1,
-      51,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,
-      -1,   103,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,
-      81,    82,    83,    84,    12,    13,    14,    15,    -1,    -1,
-      -1,    -1,    93,    94,    -1,    23,    24,    25,    99,    27,
-      28,    29,   103,    31,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    -1,    51,    12,    13,    14,    15,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    23,    24,    25,    -1,    27,
-      28,    29,    -1,    31,    -1,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,
-      -1,    49,    -1,    51,    -1,    93,    94,    -1,    -1,    -1,
-      -1,    99,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
+      -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,
+      -1,    -1,    44,    -1,    -1,    -1,    -1,    49,    50,    51,
+      -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,
+      62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
+      82,    83,    84,    -1,    -1,    87,    88,    89,    90,    -1,
+      -1,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,
+      -1,   103,    12,    13,    14,    15,    -1,    17,    18,    19,
+      20,    21,    -1,    23,    24,    25,    -1,    27,    28,    29,
+      -1,    31,    32,    33,    -1,    -1,    -1,    37,    -1,    39,
+      40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
+      50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,
+      -1,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    -1,
+      90,    -1,    -1,    93,    94,    -1,    -1,    -1,    98,    99,
+      -1,    -1,    -1,   103,    12,    13,    14,    15,    -1,    17,
+      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
+      28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,
+      -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,
+      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    82,    83,    84,    12,    13,    14,
-      15,    -1,    -1,    -1,    -1,    93,    94,    -1,    23,    24,
-      25,    99,    27,    28,    29,   103,    31,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    49,    -1,    51,    12,    13,    14,
-      15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    24,
-      25,    -1,    27,    28,    29,    -1,    31,    -1,    73,    -1,
-      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      -1,    -1,    -1,    -1,    49,    -1,    51,    -1,    93,    94,
-      -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
-      -1,    -1,    42,    -1,    -1,    80,    81,    82,    83,    84,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
-      -1,    -1,    -1,    -1,    99,    65,    66,    -1,   103,    69,
-      70,    71,    72,    -1,    74,    75,    76,    77,    78,    79,
-      -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,
-      -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    65,
-      66,   101,   102,    69,    70,    71,    72,    -1,    74,    -1,
-      -1,    77,    78,    79,    -1,    47,    -1,    -1,    -1,    -1,
-      -1,    -1,    54,    -1,    -1,    -1,    92,    93,    94,    95,
-      96,    -1,    -1,    65,    66,   101,   102,    69,    70,    71,
-      72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,
-      -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,
-      92,    93,    94,    95,    96,    -1,    -1,    65,    66,   101,
-     102,    69,    70,    71,    72,    -1,    74,    -1,    -1,    77,
-      78,    79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,
-      54,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
-      -1,    65,    66,   101,   102,    69,    70,    71,    72,    -1,
-      74,    -1,    -1,    77,    78,    79,    -1,    47,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      94,    95,    96,    -1,    -1,    65,    66,   101,   102,    69,
-      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
-      -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    65,
-      66,   101,   102,    69,    70,    71,    72,    -1,    74,    -1,
-      -1,    77,    78,    79,    -1,    47,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
-      96,    -1,    -1,    65,    66,   101,   102,    69,    70,    71,
-      72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      92,    93,    94,    95,    96,    -1,    -1,    65,    66,   101,
-     102,    69,    70,    71,    72,    -1,    74,    -1,    -1,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      54,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
-      -1,    65,    66,   101,   102,    69,    70,    71,    72,    -1,
-      74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    56,    91,    92,    93,
-      94,    95,    96,    -1,    -1,    65,    66,   101,   102,    69,
-      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
+      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    87,
+      88,    -1,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
+      98,    99,    -1,    -1,    -1,   103,    12,    13,    14,    15,
+      -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
+      -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
+      -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
+      -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
+      -1,    87,    88,    -1,    90,    -1,    -1,    93,    94,    -1,
+      -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    12,    13,
+      14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
+      24,    25,    -1,    27,    28,    29,    54,    31,    -1,    33,
+      -1,    -1,    -1,    37,    -1,    39,    40,    65,    66,    -1,
+      -1,    69,    70,    71,    72,    49,    74,    51,    -1,    77,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
+      64,    -1,    -1,    -1,    92,    93,    94,    95,    96,    73,
+      98,    -1,    -1,   101,   102,    -1,    80,    81,    82,    83,
+      84,    -1,    -1,    -1,    88,    -1,    90,    -1,    -1,    93,
+      94,    12,    13,    14,    15,    99,    -1,    -1,    -1,   103,
+      -1,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
+      31,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,
+      -1,    -1,    43,    -1,    45,    46,    47,    48,    49,    -1,
+      51,    -1,    12,    13,    14,    15,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    23,    24,    25,    -1,    27,    28,    29,
+      -1,    31,    73,    -1,    -1,    -1,    -1,    -1,    38,    80,
+      81,    82,    83,    84,    -1,    45,    -1,    47,    -1,    49,
+      -1,    51,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,
+      -1,    -1,   103,    63,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    12,    13,    14,    15,    -1,
+      -1,    -1,    -1,    93,    94,    -1,    23,    24,    25,    99,
+      27,    28,    29,   103,    31,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    65,
-      66,   101,   102,    69,    70,    71,    72,    -1,    74,    -1,
-      -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    85,
-      86,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
-      96,    -1,    -1,    65,    66,   101,   102,    69,    70,    71,
-      72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,
+      -1,    -1,    49,    -1,    51,    12,    13,    14,    15,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    23,    24,    25,    -1,
+      27,    28,    29,    -1,    31,    -1,    73,    -1,    -1,    -1,
+      -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,
+      -1,    -1,    49,    -1,    51,    -1,    93,    94,    -1,    -1,
+      -1,    -1,    99,    -1,    -1,    -1,   103,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,
+      -1,    -1,    -1,    80,    81,    82,    83,    84,    12,    13,
+      14,    15,    -1,    -1,    -1,    -1,    93,    94,    -1,    23,
+      24,    25,    99,    27,    28,    29,   103,    31,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      92,    93,    94,    95,    96,    -1,    -1,    -1,   100,   101,
-     102,    65,    66,    -1,    -1,    69,    70,    71,    72,    -1,
-      74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      94,    95,    96,    -1,    -1,    65,    66,   101,   102,    69,
-      70,    -1,    -1,    -1,    74,    -1,    -1,    77,    78,    79,
+      -1,    -1,    -1,    -1,    -1,    49,    -1,    51,    12,    13,
+      14,    15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,
+      24,    25,    -1,    27,    28,    29,    -1,    31,    -1,    73,
+      -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
+      84,    -1,    -1,    -1,    -1,    49,    -1,    51,    -1,    93,
+      94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
+      -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
+      84,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    93,
+      94,    54,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,
+      -1,    -1,    65,    66,    -1,    -1,    69,    70,    71,    72,
+      -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,    -1,
+      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
+      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
+      79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
+      65,    66,   101,   102,    69,    70,    71,    72,    -1,    74,
+      -1,    -1,    77,    78,    79,    -1,    47,    -1,    -1,    -1,
+      -1,    -1,    -1,    54,    -1,    -1,    -1,    92,    93,    94,
+      95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
+      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
+     101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
+      77,    78,    79,    -1,    47,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
+      -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
+      -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
+      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
+      79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
+      65,    66,   101,   102,    69,    70,    71,    72,    -1,    74,
+      -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    54,    -1,    -1,    -1,    92,    93,    94,
+      95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,
+      91,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
+     101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
+      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
+      -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
+      -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
+      -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
+      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
+      -1,   100,   101,   102,    65,    66,    -1,    -1,    69,    70,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    -1,
-      -1,   101,   102
+      -1,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
+     101,   102,    69,    70,    -1,    -1,    -1,    74,    -1,    -1,
+      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
+      -1,    -1,    -1,    -1,   101,   102
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1318,23 +1312,23 @@ static const yytype_uint8 yystos[] =
       75,    76,    28,    54,    91,   134,    54,    91,    52,   112,
      147,    56,   142,   105,    47,    54,    47,    54,    47,    54,
       47,    54,    85,    86,   105,    28,   100,   104,   105,   113,
-     131,   134,   134,    53,   109,   112,   130,    54,   108,   134,
+     129,   131,   134,   134,    53,   109,   112,   130,    54,   108,
      134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,    28,   149,   100,   134,
-     100,   100,    28,   134,   129,    28,   135,   134,   134,   134,
-     134,    54,    91,   134,   134,   129,   134,    28,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,    28,   100,
-     105,   134,   108,   116,   130,   130,   131,   129,   134,   131,
-     105,   108,   149,   134,   134,   149,    47,    47,    47,    47,
-     153,    32,    34,    54,   130,   115,   130,    28,   105,   151,
-     108,   108,   134,   134,   134,   134,   100,    54,   134,    32,
-      58,   110,   129,   130,    32,    28,   131,   151,   151,   134,
-     130,   129,   131,    36,   111,   119,   120,   121,   122,   128,
-     110,   120,   128,    32,   131,   131,   130,   131,   115,   130,
-     122,   130,   121,   123,   129,   130,   123,    28,   150,   131,
-     130,   130,    32,    32,   109,   112,   115,   110,   118,   112,
-     105,   130,    32,   129,   129,   130,   129,   130,   129,    28,
-      32,   131,   116,   131,   115,   130,   130,   130
+     134,   134,   134,   134,   134,   134,   134,    28,   149,   100,
+     134,   100,   100,    28,   134,   129,    28,   135,   134,   134,
+     134,   134,    54,    91,   134,   134,   129,   134,    28,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,    28,
+     100,   105,   134,   108,   116,   130,   130,   131,   129,   134,
+     131,   105,   108,   149,   134,   134,   149,    47,    47,    47,
+      47,   153,    32,    34,    54,   130,   115,   130,    28,   105,
+     151,   108,   108,   134,   134,   134,   134,   100,    54,   134,
+      32,    58,   110,   129,   130,    32,    28,   131,   151,   151,
+     134,   130,   129,   131,    36,   111,   119,   120,   121,   122,
+     128,   110,   120,   128,    32,   131,   131,   130,   131,   115,
+     130,   122,   130,   121,   123,   129,   130,   123,    28,   150,
+     131,   130,   130,    32,    32,   109,   112,   115,   110,   118,
+     112,   105,   130,    32,   129,   129,   130,   129,   130,   129,
+      28,    32,   131,   116,   131,   115,   130,   130,   130
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -3133,7 +3127,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 3137 "engines/director/lingo/lingo-gr.cpp"
+#line 3131 "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 74f7b48..d1a33ef 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -427,7 +427,7 @@ begin:	  /* nothing */		{ $$ = g_lingo->_currentScript->size(); }
 end:	  /* nothing */		{ g_lingo->code1(STOP); $$ = g_lingo->_currentScript->size(); }
 	;
 
-stmtlist: /* nothing */		{ $$ = g_lingo->_currentScript->size(); }
+stmtlist: begin				{ $$ = g_lingo->_currentScript->size(); }
 	| stmtlist nl
 	| stmtlist stmt
 	;


Commit: ede9fcf8a312ce30ac08b8dcf41150d4ac5936f1
    https://github.com/scummvm/scummvm/commit/ede9fcf8a312ce30ac08b8dcf41150d4ac5936f1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-02T20:35:31+01:00

Commit Message:
DIRECTOR: LINGO: Added special lex case for 'set value of ()'

Changed paths:
    engines/director/lingo/lingo-lex.cpp
    engines/director/lingo/lingo-lex.l
    engines/director/lingo/tests/the.lingo


diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index d8bfaec..e7c683e 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[]  );
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 75
-#define YY_END_OF_BUFFER 76
+#define YY_NUM_RULES 76
+#define YY_END_OF_BUFFER 77
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -373,38 +373,39 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[275] =
+static yyconst flex_int16_t yy_accept[285] =
     {   0,
-        0,    0,   76,   74,    4,   72,   72,   74,   74,   74,
-       71,   71,   71,   70,   71,   67,   71,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   74,    3,    3,    4,   72,
-        0,    0,    0,    0,    0,   73,    5,   66,    2,   69,
-       70,   65,   63,   64,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   23,   13,   68,
-       68,   68,   68,   68,   68,   68,   68,   68,   36,   37,
-       68,   39,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   56,   68,   68,   68,    1,    3,    3,    0,    5,
-
-        2,   69,   68,    7,   68,   68,   68,   68,   68,   68,
-       17,   68,   68,   68,   68,    0,   68,   68,   68,   68,
-       68,   68,   68,   32,   68,   68,   35,   68,   68,   68,
-       68,   44,   68,   46,   68,   68,   68,   68,   68,   68,
-       68,   68,    0,   68,   68,    9,   68,   11,   12,   16,
-        0,   17,   19,   68,   68,   68,    0,   68,   68,   26,
-       27,   28,   29,   68,   68,   68,   34,   38,   40,   68,
-       68,   68,   68,   68,   48,    0,   54,   60,   68,   58,
-       62,   15,    6,   68,   68,   17,   17,   68,   20,   68,
-       22,   68,   68,   30,   68,   33,   68,   68,   68,   68,
-
-       68,   68,   53,   53,   53,   55,   61,   68,    0,    8,
-       68,   17,   68,   21,   68,   68,   31,   68,   68,   68,
-       45,   57,   47,    0,    0,   53,   53,   59,    0,   68,
-       18,   68,   68,   68,   68,   68,    0,    0,    0,    0,
-       53,   53,   14,   10,   24,   68,   68,   42,   43,    0,
-        0,    0,   53,   53,   68,   41,    0,    0,    0,    0,
-        0,   25,   52,   51,   52,    0,    0,    0,    0,    0,
-        0,   49,   50,    0
+        0,    0,   77,   75,    4,   73,   73,   75,   75,   75,
+       72,   72,   72,   71,   72,   68,   72,   69,   69,   69,
+       69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
+       69,   69,   69,   69,   69,   75,    3,    3,    4,   73,
+        0,    0,    0,    0,    0,   74,    5,   67,    2,   70,
+       71,   66,   64,   65,   69,   69,   69,   69,   69,   69,
+       69,   69,   69,   69,   69,   69,   69,   23,   13,   69,
+       69,   69,   69,   69,   69,   69,   69,   69,   36,   37,
+       69,   39,   69,   69,   69,   69,   69,   69,   69,   69,
+       69,   57,   69,   69,   69,    1,    3,    3,    0,    5,
+
+        2,   70,   69,    7,   69,   69,   69,   69,   69,   69,
+       17,   69,   69,   69,   69,    0,   69,   69,   69,   69,
+       69,   69,   69,   32,   69,   69,   35,   69,   69,   69,
+       69,   44,   69,   46,   69,   69,   69,   69,   69,   69,
+       69,   69,    0,   69,   69,    9,   69,   11,   12,   16,
+        0,   17,   19,   69,   69,   69,    0,   69,   69,   26,
+       27,   28,   29,   69,   69,   69,   34,   38,   40,   69,
+       69,   69,   69,   69,   48,    0,   55,   61,   69,   59,
+       63,   15,    6,   69,   69,   17,   17,   69,   20,   69,
+       22,   69,   69,   30,   69,   33,   69,   69,   69,   69,
+
+       69,   69,   54,   54,   54,   54,   56,   62,   69,    0,
+        8,   69,   17,   69,   21,   69,   69,   31,   69,   69,
+       69,   45,   58,   47,    0,    0,   54,   54,   54,   60,
+        0,   69,   18,   69,   69,   69,   69,   69,    0,    0,
+        0,    0,   54,   54,   54,   14,   10,   24,   69,   69,
+       42,   43,    0,    0,    0,   54,   54,   54,   69,   41,
+        0,    0,    0,    0,    0,   54,   25,   53,   52,   53,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   49,
+       50,   51,   51,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -450,18 +451,18 @@ static yyconst flex_int32_t yy_meta[66] =
         5,    5,    5,    5,    1
     } ;
 
-static yyconst flex_int16_t yy_base[286] =
+static yyconst flex_int16_t yy_base[296] =
     {   0,
-        0,   64,  188,  702,   68,   72,   76,   80,  148,    0,
-      702,  129,  106,   55,   71,  702,   95,   66,   68,   66,
+        0,   64,  188,  741,   68,   72,   76,   80,  148,    0,
+      741,  129,  106,   55,   71,  741,   95,   66,   68,   66,
        62,   72,   88,   73,    0,  104,   82,  120,  110,  136,
-      119,   83,  113,  154,  156,  105,  192,  209,  213,  702,
-      217,  180,  225,  120,  100,  702,    0,  702,    0,   89,
-      130,  702,  702,  702,    0,  114,  108,  155,  181,  178,
+      119,   83,  113,  154,  156,  105,  192,  209,  213,  741,
+      217,  180,  225,  120,  100,  741,    0,  741,    0,   89,
+      130,  741,  741,  741,    0,  114,  108,  155,  181,  178,
       195,  191,  189,  210,  217,  220,  202,   89,    0,  205,
       220,  214,  214,  226,  215,  232,  212,  219,    0,    0,
       226,    0,  238,  252,  224,  234,  241,  246,  267,  254,
-      264,    0,  265,  253,  259,  702,  292,  315,  265,    0,
+      264,    0,  265,  253,  259,  741,  292,  315,  265,    0,
 
         0,   85,  280,    0,  274,  274,  273,  281,  284,  293,
       320,  286,  289,  301,  312,  333,  299,  319,  308,  320,
@@ -471,56 +472,60 @@ static yyconst flex_int16_t yy_base[286] =
       185,    0,    0,  363,  373,  379,  368,  382,  368,    0,
         0,    0,    0,  373,  375,  387,    0,    0,  392,  385,
       390,  395,  380,  383,    0,  418,  157,    0,  405,  403,
-        0,  395,    0,  409,  406,    0,    0,  407,    0,  414,
-      702,  414,  410,    0,  412,    0,  427,  418,  416,  415,
-
-      433,  424,  473,  475,  479,  456,    0,  433,  488,    0,
-      434,    0,  430,    0,  447,  474,    0,  477,  452,  463,
-        0,    0,    0,  495,  483,  497,  499,    0,  486,  471,
-        0,  493,  497,  498,  476,  483,  522,  509,  514,  512,
-      543,  555,  702,    0,    0,  508,  519,    0,    0,  515,
-      561,  530,  567,  578,  534,    0,  538,  584,  550,  589,
-      593,    0,  702,  595,  702,  599,  559,  603,  563,  610,
-      615,  616,  620,  702,  657,  659,  662,  665,  671,  676,
-      681,  684,  689,  691,  696
+        0,  395,    0,  410,  407,    0,    0,  397,    0,  413,
+      741,  412,  409,    0,  426,    0,  428,  414,  416,  415,
+
+      437,  426,  475,  476,  485,  486,  458,    0,  441,  487,
+        0,  446,    0,  442,    0,  478,  477,    0,  481,  466,
+      470,    0,    0,    0,  514,  495,  499,  522,  533,    0,
+      489,  473,    0,  493,  501,  500,  508,  507,  546,  533,
+      530,  528,  559,  560,  578,  741,    0,    0,  523,  536,
+        0,    0,  532,  461,  544,  587,  588,  599,  547,    0,
+      553,  508,  564,  601,  621,  606,    0,  741,  610,  741,
+      620,  580,  627,  595,  628,  632,  638,  642,  602,  657,
+      659,  663,  665,  741,  696,  698,  701,  704,  710,  715,
+      720,  723,  728,  730,  735
+
     } ;
 
-static yyconst flex_int16_t yy_def[286] =
+static yyconst flex_int16_t yy_def[296] =
     {   0,
-      274,    1,  274,  274,  274,  274,  274,  274,  275,  276,
-      274,  274,  274,  274,  274,  274,  274,  277,  277,  277,
-      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
-      277,  277,  277,  277,  277,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  275,  274,  278,  274,  279,  274,
-      274,  274,  274,  274,  277,  277,  277,  277,  277,  277,
-      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
-      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
-      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
-      277,  277,  277,  277,  277,  274,  274,  274,  274,  278,
-
-      279,  274,  277,  277,  277,  277,  277,  277,  277,  277,
-      280,  277,  277,  277,  277,  274,  277,  277,  277,  277,
-      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
-      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
-      277,  277,  274,  277,  277,  277,  277,  277,  277,  277,
-      281,  282,  277,  277,  277,  277,  274,  277,  277,  277,
-      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
-      277,  277,  277,  277,  277,  283,  277,  277,  277,  277,
-      277,  274,  277,  277,  277,  284,  282,  277,  277,  277,
-      274,  277,  277,  277,  277,  277,  277,  277,  277,  277,
-
-      277,  277,  283,  283,  283,  274,  277,  277,  274,  277,
-      277,  284,  277,  277,  277,  277,  277,  277,  277,  277,
-      277,  277,  277,  274,  274,  283,  283,  277,  274,  277,
-      277,  277,  277,  277,  277,  277,  274,  274,  274,  274,
-      283,  283,  274,  277,  277,  277,  277,  277,  277,  274,
-      274,  274,  283,  283,  277,  277,  274,  285,  274,  274,
-      274,  277,  274,  285,  274,  274,  274,  274,  274,  274,
-      274,  285,  285,    0,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274
+      284,    1,  284,  284,  284,  284,  284,  284,  285,  286,
+      284,  284,  284,  284,  284,  284,  284,  287,  287,  287,
+      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  284,  284,  284,  284,  284,
+      284,  284,  284,  284,  285,  284,  288,  284,  289,  284,
+      284,  284,  284,  284,  287,  287,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  284,  284,  284,  284,  288,
+
+      289,  284,  287,  287,  287,  287,  287,  287,  287,  287,
+      290,  287,  287,  287,  287,  284,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
+      287,  287,  284,  287,  287,  287,  287,  287,  287,  287,
+      291,  292,  287,  287,  287,  287,  284,  287,  287,  287,
+      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  293,  287,  287,  287,  287,
+      287,  284,  287,  287,  287,  294,  292,  287,  287,  287,
+      284,  287,  287,  287,  287,  287,  287,  287,  287,  287,
+
+      287,  287,  293,  293,  293,  293,  284,  287,  287,  284,
+      287,  287,  294,  287,  287,  287,  287,  287,  287,  287,
+      287,  287,  287,  287,  284,  284,  293,  293,  293,  287,
+      284,  287,  287,  287,  287,  287,  287,  287,  284,  284,
+      284,  284,  293,  293,  293,  284,  287,  287,  287,  287,
+      287,  287,  284,  284,  284,  293,  293,  293,  287,  287,
+      284,  295,  284,  284,  284,  293,  287,  284,  295,  284,
+      284,  284,  284,  284,  284,  284,  284,  284,  284,  295,
+      295,  284,  295,    0,  284,  284,  284,  284,  284,  284,
+      284,  284,  284,  284,  284
+
     } ;
 
-static yyconst flex_int16_t yy_nxt[768] =
+static yyconst flex_int16_t yy_nxt[807] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   11,
        13,    4,   14,   15,   16,   17,   18,   19,   20,   21,
@@ -538,77 +543,82 @@ static yyconst flex_int16_t yy_nxt[768] =
        66,   44,   62,   67,   63,   69,   68,  104,   86,   65,
        77,   72,   70,   87,   64,   73,   74,   48,   71,   78,
        75,   50,   51,   88,   66,   83,   99,   89,  103,   76,
-       69,   84,  104,   46,   85,   77,   70,   79,   87,  206,
-      206,   74,   71,   78,   80,   75,   81,   88,   82,   83,
+       69,   84,  104,   46,   85,   77,   70,   79,   87,  207,
+      207,   74,   71,   78,   80,   75,   81,   88,   82,   83,
        99,   89,  103,   76,   90,   84,  105,   91,   85,   93,
-       94,   42,   79,   92,   42,   95,  151,  274,   80,  151,
-       81,  274,   82,   97,   40,   40,   98,  106,  274,   90,
+       94,   42,   79,   92,   42,   95,  151,  284,   80,  151,
+       81,  284,   82,   97,   40,   40,   98,  106,  284,   90,
 
-       44,  105,   91,  274,   93,   94,  107,   92,  111,   95,
+       44,  105,   91,  284,   93,   94,  107,   92,  111,   95,
        98,   40,   40,   98,   39,   40,   40,   41,   41,   40,
        40,   41,  106,  108,  110,   44,   42,   43,   43,   42,
-      107,  115,  109,  111,  112,  113,  114,  274,  117,  118,
-      119,  274,  120,  121,  122,   44,  128,  108,  110,  123,
-      126,  124,  274,  127,  129,  115,  109,  274,  132,  112,
+      107,  115,  109,  111,  112,  113,  114,  284,  117,  118,
+      119,  284,  120,  121,  122,   44,  128,  108,  110,  123,
+      126,  124,  284,  127,  129,  115,  109,  284,  132,  112,
       113,  114,  117,  118,  133,  119,  120,  121,  125,  122,
        44,  128,  130,  123,  126,  134,  124,  127,  135,  129,
-      137,  131,  132,  136,  138,  139,  274,  141,  133,  140,
-      274,  142,  125,   97,   40,   40,   98,  130,  143,  134,
+      137,  131,  132,  136,  138,  139,  284,  141,  133,  140,
+      284,  142,  125,   97,   40,   40,   98,  130,  143,  134,
 
       144,  148,  135,  145,  137,  131,  146,  147,  136,  138,
       139,  141,  149,  150,  140,  142,   98,   40,   40,   98,
       153,  151,  143,  154,  151,  144,  148,  145,  155,  156,
       146,  147,   55,  158,  116,  161,  149,  116,  150,  159,
-      162,  274,  163,  165,  153,  164,  166,  154,  160,  167,
+      162,  284,  163,  165,  153,  164,  166,  154,  160,  167,
       168,  169,  155,  170,  156,  171,  172,  158,  173,  161,
-      174,  175,  274,  178,  159,  162,  163,  157,  165,  164,
+      174,  175,  284,  178,  159,  162,  163,  157,  165,  164,
       179,  166,  160,  167,  168,  169,  180,  170,  181,  171,
       182,  172,  183,  173,  174,  175,  176,  178,  184,  176,
-      185,  157,  188,  189,  179,  190,  209,  191,  192,  209,
+      185,  157,  188,  189,  179,  190,  210,  191,  192,  210,
 
       193,  180,  194,  181,  195,  182,  183,  196,  197,  198,
       199,  200,  184,  177,  201,  185,  188,  202,  189,  176,
-      190,  191,  176,  192,  193,  207,  194,  208,  195,  210,
-      211,  217,  196,  197,  198,  199,  200,  177,  201,  213,
-      214,  202,  215,  216,  204,  218,  274,  219,  220,  221,
-      207,  205,  208,  222,  210,  211,  217,  223,  206,  206,
-      274,  228,  230,  213,  214,  232,  215,  216,  204,  231,
-      218,  219,  220,  221,  224,  205,  224,  224,  222,  224,
-      224,  223,  225,  224,  225,  228,  230,  235,  225,  209,
-      232,  226,  209,  231,  233,  234,  237,  236,  224,  237,
-
-      224,  224,  238,  224,  244,  274,  225,  243,  225,  248,
-      227,  235,  229,  245,  238,  246,  226,  240,  247,  233,
-      234,  236,  249,  237,  239,  250,  237,  238,  244,  240,
-      241,  242,  243,  248,  227,  251,  252,  229,  245,  238,
-      246,  240,  255,  247,  224,  256,  249,  224,  239,  257,
-      250,  239,  225,  240,  241,  242,  224,  259,  263,  224,
-      251,  252,  258,  274,  225,  258,  255,  262,  260,  256,
-      265,  260,  274,  257,  274,  239,  225,  253,  274,  261,
-      270,  259,  261,  263,  271,  258,  274,  225,  258,  254,
-      266,  262,  274,  266,  268,  265,  274,  268,  274,  274,
-
-      266,  253,  274,  266,  268,  270,  274,  268,  238,  271,
-      274,  272,  238,  254,  272,  274,  273,  272,  267,  273,
-      272,  273,  269,  240,  273,  274,  274,  240,  267,  274,
-      274,  274,  269,  238,  274,  274,  274,  238,  274,  274,
-      274,  274,  267,  274,  274,  274,  269,  240,  274,  274,
-      274,  240,  267,  274,  274,  274,  269,   45,   45,  274,
-       45,   45,   45,   47,   47,   55,   55,   55,  100,  100,
-      100,  101,  101,  274,  101,  101,  101,  152,  274,  152,
-      152,  152,  186,  274,  274,  186,  186,  187,  187,  187,
-      203,  274,  274,  203,  212,  212,  212,  264,  274,  274,
-
-      264,    3,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274
+      190,  191,  176,  192,  193,  208,  194,  209,  195,  214,
+      211,  212,  196,  197,  198,  199,  200,  177,  201,  215,
+      216,  202,  217,  220,  204,  218,  219,  284,  221,  222,
+      208,  205,  209,  214,  206,  211,  212,  223,  284,  224,
+      207,  207,  262,  215,  216,  262,  217,  220,  204,  230,
+      218,  219,  221,  222,  232,  205,  225,  225,  206,  225,
+      225,  233,  223,  224,  226,  226,  225,  225,  210,  225,
+      225,  210,  227,  230,  226,  226,  234,  235,  232,  236,
+
+      225,  237,  229,  225,  238,  233,  247,  284,  226,  262,
+      246,  231,  262,  248,  240,  239,  228,  227,  239,  249,
+      250,  234,  235,  225,  236,  237,  225,  229,  238,  242,
+      247,  226,  243,  240,  225,  246,  231,  225,  248,  240,
+      228,  251,  226,  241,  249,  250,  252,  239,  242,  253,
+      239,  254,  255,  242,  244,  284,  243,  259,  240,  245,
+      225,  225,  260,  225,  225,  251,  261,  241,  226,  226,
+      252,  263,  242,  268,  253,  241,  254,  255,  244,  225,
+      267,  259,  225,  245,  270,  284,  260,  226,  264,  265,
+      261,  264,  265,  256,  257,  263,  226,  226,  268,  241,
+
+      225,  276,  271,  225,  267,  271,  284,  275,  226,  270,
+      275,  284,  284,  258,  284,  226,  277,  256,  257,  266,
+      240,  271,  273,  282,  271,  273,  276,  284,  273,  278,
+      272,  273,  278,  280,  284,  242,  280,  258,  284,  281,
+      240,  277,  281,  278,  266,  240,  278,  240,  282,  272,
+      274,  284,  284,  284,  272,  242,  274,  279,  280,  242,
+      281,  280,  242,  281,  283,  240,  283,  283,  284,  283,
+      284,  279,  240,  272,  274,  284,  284,  284,  284,  242,
+      274,  279,  284,  284,  284,  284,  242,  284,  284,  284,
+      284,  284,  284,  284,  284,  279,   45,   45,  284,   45,
+
+       45,   45,   47,   47,   55,   55,   55,  100,  100,  100,
+      101,  101,  284,  101,  101,  101,  152,  284,  152,  152,
+      152,  186,  284,  284,  186,  186,  187,  187,  187,  203,
+      284,  284,  203,  213,  213,  213,  269,  284,  284,  269,
+        3,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+
+      284,  284,  284,  284,  284,  284
     } ;
 
-static yyconst flex_int16_t yy_chk[768] =
+static yyconst flex_int16_t yy_chk[807] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -656,44 +666,49 @@ static yyconst flex_int16_t yy_chk[768] =
 
       159,  141,  164,  142,  165,  143,  144,  166,  169,  170,
       171,  172,  145,  138,  173,  147,  154,  174,  155,  176,
-      156,  157,  176,  158,  159,  179,  164,  180,  165,  184,
-      185,  195,  166,  169,  170,  171,  172,  138,  173,  188,
-      190,  174,  192,  193,  176,  197,    0,  198,  199,  200,
-      179,  176,  180,  201,  184,  185,  195,  202,  206,  206,
-        0,  208,  211,  188,  190,  215,  192,  193,  176,  213,
-      197,  198,  199,  200,  203,  176,  204,  203,  201,  204,
-      205,  202,  203,  205,  204,  208,  211,  219,  205,  209,
-      215,  204,  209,  213,  216,  218,  224,  220,  226,  224,
-
-      227,  226,  225,  227,  230,    0,  226,  229,  227,  235,
-      205,  219,  209,  232,  224,  233,  204,  225,  234,  216,
-      218,  220,  236,  237,  224,  238,  237,  225,  230,  224,
-      226,  227,  229,  235,  205,  239,  240,  209,  232,  224,
-      233,  225,  246,  234,  241,  247,  236,  241,  224,  250,
-      238,  237,  241,  224,  226,  227,  242,  252,  257,  242,
-      239,  240,  251,    0,  242,  251,  246,  255,  253,  247,
-      259,  253,    0,  250,    0,  237,  253,  241,    0,  254,
-      267,  252,  254,  257,  269,  258,    0,  254,  258,  242,
-      260,  255,    0,  260,  261,  259,  264,  261,    0,  264,
-
-      266,  241,    0,  266,  268,  267,    0,  268,  260,  269,
-        0,  270,  261,  242,  270,    0,  271,  272,  260,  271,
-      272,  273,  261,  260,  273,    0,    0,  261,  266,    0,
-        0,    0,  268,  260,    0,    0,    0,  261,    0,    0,
-        0,    0,  260,    0,    0,    0,  261,  260,    0,    0,
-        0,  261,  266,    0,    0,    0,  268,  275,  275,    0,
-      275,  275,  275,  276,  276,  277,  277,  277,  278,  278,
-      278,  279,  279,    0,  279,  279,  279,  280,    0,  280,
-      280,  280,  281,    0,    0,  281,  281,  282,  282,  282,
-      283,    0,    0,  283,  284,  284,  284,  285,    0,    0,
-
-      285,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274
+      156,  157,  176,  158,  159,  179,  164,  180,  165,  188,
+      184,  185,  166,  169,  170,  171,  172,  138,  173,  190,
+      192,  174,  193,  198,  176,  195,  197,    0,  199,  200,
+      179,  176,  180,  188,  176,  184,  185,  201,    0,  202,
+      207,  207,  254,  190,  192,  254,  193,  198,  176,  209,
+      195,  197,  199,  200,  212,  176,  203,  204,  176,  203,
+      204,  214,  201,  202,  203,  204,  205,  206,  210,  205,
+      206,  210,  204,  209,  205,  206,  216,  217,  212,  219,
+
+      227,  220,  206,  227,  221,  214,  232,    0,  227,  262,
+      231,  210,  262,  234,  226,  225,  205,  204,  225,  235,
+      236,  216,  217,  228,  219,  220,  228,  206,  221,  226,
+      232,  228,  227,  225,  229,  231,  210,  229,  234,  226,
+      205,  237,  229,  225,  235,  236,  238,  239,  225,  240,
+      239,  241,  242,  226,  228,    0,  227,  249,  225,  229,
+      243,  244,  250,  243,  244,  237,  253,  225,  243,  244,
+      238,  255,  225,  261,  240,  239,  241,  242,  228,  245,
+      259,  249,  245,  229,  263,    0,  250,  245,  256,  257,
+      253,  256,  257,  243,  244,  255,  256,  257,  261,  239,
+
+      258,  272,  264,  258,  259,  264,    0,  266,  258,  263,
+      266,  269,    0,  245,  269,  266,  274,  243,  244,  258,
+      264,  271,  265,  279,  271,  265,  272,    0,  273,  275,
+      264,  273,  275,  276,    0,  264,  276,  245,    0,  277,
+      265,  274,  277,  278,  258,  264,  278,  275,  279,  271,
+      265,    0,    0,    0,  264,  265,  273,  275,  280,  264,
+      281,  280,  275,  281,  282,  265,  283,  282,    0,  283,
+        0,  278,  275,  271,  265,    0,    0,    0,    0,  265,
+      273,  275,    0,    0,    0,    0,  275,    0,    0,    0,
+        0,    0,    0,    0,    0,  278,  285,  285,    0,  285,
+
+      285,  285,  286,  286,  287,  287,  287,  288,  288,  288,
+      289,  289,    0,  289,  289,  289,  290,    0,  290,  290,
+      290,  291,    0,    0,  291,  291,  292,  292,  292,  293,
+        0,    0,  293,  294,  294,  294,  295,    0,    0,  295,
+      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+
+      284,  284,  284,  284,  284,  284
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -773,7 +788,7 @@ static int checkImmediate(int token) {
 	return token;
 }
 
-#line 777 "engines/director/lingo/lingo-lex.cpp"
+#line 792 "engines/director/lingo/lingo-lex.cpp"
 
 #define INITIAL 0
 
@@ -959,7 +974,7 @@ YY_DECL
 #line 78 "engines/director/lingo/lingo-lex.l"
 
 
-#line 963 "engines/director/lingo/lingo-lex.cpp"
+#line 978 "engines/director/lingo/lingo-lex.cpp"
 
 	if ( !(yy_init) )
 		{
@@ -1013,13 +1028,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 275 )
+				if ( yy_current_state >= 285 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 274 );
+		while ( yy_current_state != 284 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1322,6 +1337,17 @@ YY_RULE_SETUP
 {
 		count();
 
+		yylval.s = new Common::String("value");
+
+		return FBLTINONEARG;
+	}
+	YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 163 "engines/director/lingo/lingo-lex.l"
+{
+		count();
+
 		const char *ptr = &yytext[4]; // Skip 'the '
 		while (*ptr == ' ' || *ptr == '\t')
 			ptr++;
@@ -1360,9 +1386,9 @@ YY_RULE_SETUP
 		warning("Unhandled the entity %s", ptr);
 	}
 	YY_BREAK
-case 52:
+case 53:
 YY_RULE_SETUP
-#line 196 "engines/director/lingo/lingo-lex.l"
+#line 203 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1395,9 +1421,9 @@ YY_RULE_SETUP
 			return THEENTITY;
 	}
 	YY_BREAK
-case 53:
+case 54:
 YY_RULE_SETUP
-#line 227 "engines/director/lingo/lingo-lex.l"
+#line 234 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1418,80 +1444,80 @@ YY_RULE_SETUP
 		warning("Unhandled the entity %s", ptr);
 	}
 	YY_BREAK
-case 54:
+case 55:
 YY_RULE_SETUP
-#line 246 "engines/director/lingo/lingo-lex.l"
+#line 253 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
-case 55:
-/* rule 55 can match eol */
+case 56:
+/* rule 56 can match eol */
 YY_RULE_SETUP
-#line 247 "engines/director/lingo/lingo-lex.l"
+#line 254 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHENNL; }
 	YY_BREAK
-case 56:
+case 57:
 YY_RULE_SETUP
-#line 248 "engines/director/lingo/lingo-lex.l"
+#line 255 "engines/director/lingo/lingo-lex.l"
 { count(); return tTO; }
 	YY_BREAK
-case 57:
+case 58:
 YY_RULE_SETUP
-#line 249 "engines/director/lingo/lingo-lex.l"
+#line 256 "engines/director/lingo/lingo-lex.l"
 { count(); return tSPRITE; }
 	YY_BREAK
-case 58:
+case 59:
 YY_RULE_SETUP
-#line 250 "engines/director/lingo/lingo-lex.l"
+#line 257 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITH; }
 	YY_BREAK
-case 59:
+case 60:
 YY_RULE_SETUP
-#line 251 "engines/director/lingo/lingo-lex.l"
+#line 258 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITHIN; }
 	YY_BREAK
-case 60:
+case 61:
 YY_RULE_SETUP
-#line 252 "engines/director/lingo/lingo-lex.l"
+#line 259 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHEN; }
 	YY_BREAK
-case 61:
+case 62:
 YY_RULE_SETUP
-#line 253 "engines/director/lingo/lingo-lex.l"
+#line 260 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHILE; }
 	YY_BREAK
-case 62:
+case 63:
 YY_RULE_SETUP
-#line 254 "engines/director/lingo/lingo-lex.l"
+#line 261 "engines/director/lingo/lingo-lex.l"
 { count(); return tWORD; }
 	YY_BREAK
-case 63:
+case 64:
 YY_RULE_SETUP
-#line 256 "engines/director/lingo/lingo-lex.l"
+#line 263 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
-case 64:
+case 65:
 YY_RULE_SETUP
-#line 257 "engines/director/lingo/lingo-lex.l"
+#line 264 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
-case 65:
+case 66:
 YY_RULE_SETUP
-#line 258 "engines/director/lingo/lingo-lex.l"
+#line 265 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
-case 66:
+case 67:
 YY_RULE_SETUP
-#line 259 "engines/director/lingo/lingo-lex.l"
+#line 266 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
-case 67:
+case 68:
 YY_RULE_SETUP
-#line 260 "engines/director/lingo/lingo-lex.l"
+#line 267 "engines/director/lingo/lingo-lex.l"
 { count(); return g_lingo->_inCond ? tEQ : '='; }
 	YY_BREAK
-case 68:
+case 69:
 YY_RULE_SETUP
-#line 262 "engines/director/lingo/lingo-lex.l"
+#line 269 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1538,43 +1564,43 @@ YY_RULE_SETUP
 		return ID;
 	}
 	YY_BREAK
-case 69:
+case 70:
 YY_RULE_SETUP
-#line 307 "engines/director/lingo/lingo-lex.l"
+#line 314 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
-case 70:
+case 71:
 YY_RULE_SETUP
-#line 308 "engines/director/lingo/lingo-lex.l"
+#line 315 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
-case 71:
+case 72:
 YY_RULE_SETUP
-#line 309 "engines/director/lingo/lingo-lex.l"
+#line 316 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
-case 72:
-/* rule 72 can match eol */
+case 73:
+/* rule 73 can match eol */
 YY_RULE_SETUP
-#line 310 "engines/director/lingo/lingo-lex.l"
+#line 317 "engines/director/lingo/lingo-lex.l"
 { return '\n'; }
 	YY_BREAK
-case 73:
+case 74:
 YY_RULE_SETUP
-#line 311 "engines/director/lingo/lingo-lex.l"
+#line 318 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
-case 74:
+case 75:
 YY_RULE_SETUP
-#line 312 "engines/director/lingo/lingo-lex.l"
+#line 319 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 314 "engines/director/lingo/lingo-lex.l"
+#line 321 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1578 "engines/director/lingo/lingo-lex.cpp"
+#line 1604 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -1868,7 +1894,7 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 275 )
+			if ( yy_current_state >= 285 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1896,11 +1922,11 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 275 )
+		if ( yy_current_state >= 285 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 274);
+	yy_is_jam = (yy_current_state == 284);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2534,7 +2560,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 314 "engines/director/lingo/lingo-lex.l"
+#line 321 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 15dc312..c133b86 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -153,6 +153,13 @@ whitespace [\t ]
 
 		return THEENTITYWITHID;
 	}
+(?i:the[ \t]+value[\t ]+of[\t ]*)	{
+		count();
+
+		yylval.s = new Common::String("value");
+
+		return FBLTINONEARG;
+	}
 (?i:the[ \t]+[[:alpha:]]+[\t ]+of[\t ]+[[:alpha:]]+)	{
 		count();
 
diff --git a/engines/director/lingo/tests/the.lingo b/engines/director/lingo/tests/the.lingo
index f728fb7..28388d9 100644
--- a/engines/director/lingo/tests/the.lingo
+++ b/engines/director/lingo/tests/the.lingo
@@ -9,3 +9,5 @@ put the date
 put the long date
 put the abbreviated time
 put the short time
+
+set gravityConst = the value of ( the text of cast A14)


Commit: 5740a2a4b883ccecdacbe5f9f05de3d51c63eed5
    https://github.com/scummvm/scummvm/commit/5740a2a4b883ccecdacbe5f9f05de3d51c63eed5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-02T20:46:40+01:00

Commit Message:
DIRECTOR: LINGO: Fix macro calls as part of statement lists

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 457ff22..b462393 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -604,8 +604,8 @@ static const yytype_uint8 yytranslate[] =
 static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     7,     9,    12,    14,    16,    18,    20,
-      22,    23,    25,    27,    29,    34,    39,    44,    49,    54,
-      59,    65,    70,    75,    81,    83,    85,    87,    89,    95,
+      22,    23,    25,    27,    32,    37,    42,    47,    52,    57,
+      63,    68,    73,    79,    81,    83,    85,    87,    89,    95,
      106,   118,   122,   129,   134,   141,   151,   161,   171,   182,
      193,   200,   201,   205,   208,   210,   213,   215,   222,   224,
      231,   238,   241,   242,   245,   249,   251,   253,   254,   255,
@@ -628,12 +628,12 @@ static const yytype_int16 yyrhs[] =
 {
      107,     0,    -1,   107,   108,   113,    -1,   113,    -1,     1,
      108,    -1,    98,    -1,    53,    -1,    58,    -1,    36,    -1,
-      52,    -1,    -1,   145,    -1,   152,    -1,   116,    -1,    49,
-     134,    42,    28,    -1,    49,   134,    42,   135,    -1,    49,
-     134,    75,   134,    -1,    49,   134,    76,   134,    -1,    51,
-      28,    91,   134,    -1,    51,    13,    91,   134,    -1,    51,
-      14,   134,    91,   134,    -1,    51,    28,    54,   134,    -1,
-      51,    13,    54,   134,    -1,    51,    14,   134,    54,   134,
+      52,    -1,    -1,   145,    -1,   116,    -1,    49,   134,    42,
+      28,    -1,    49,   134,    42,   135,    -1,    49,   134,    75,
+     134,    -1,    49,   134,    76,   134,    -1,    51,    28,    91,
+     134,    -1,    51,    13,    91,   134,    -1,    51,    14,   134,
+      91,   134,    -1,    51,    28,    54,   134,    -1,    51,    13,
+      54,   134,    -1,    51,    14,   134,    54,   134,    -1,   152,
       -1,   134,    -1,   136,    -1,   115,    -1,   117,    -1,   125,
      123,   131,   130,    32,    -1,   126,    91,   134,   130,    54,
      134,   130,   131,   130,    32,    -1,   126,    91,   134,   130,
@@ -698,8 +698,8 @@ static const yytype_int16 yyrhs[] =
 static const yytype_uint16 yyrline[] =
 {
        0,   121,   121,   122,   123,   126,   133,   140,   147,   154,
-     157,   158,   159,   160,   163,   169,   172,   173,   174,   180,
-     187,   193,   199,   206,   214,   215,   218,   219,   224,   237,
+     157,   158,   159,   162,   168,   171,   172,   173,   179,   186,
+     192,   198,   205,   213,   214,   215,   218,   219,   224,   237,
      255,   269,   274,   277,   282,   292,   304,   316,   326,   336,
      346,   358,   359,   362,   363,   366,   367,   370,   378,   379,
      385,   393,   396,   399,   402,   409,   416,   424,   427,   430,
@@ -773,8 +773,8 @@ static const yytype_uint16 yytoknum[] =
 static const yytype_uint8 yyr1[] =
 {
        0,   106,   107,   107,   107,   108,   109,   110,   111,   112,
-     113,   113,   113,   113,   114,   114,   114,   114,   114,   114,
-     114,   114,   114,   114,   115,   115,   116,   116,   116,   116,
+     113,   113,   113,   114,   114,   114,   114,   114,   114,   114,
+     114,   114,   114,   115,   115,   115,   116,   116,   116,   116,
      116,   116,   116,   116,   117,   117,   117,   117,   117,   117,
      117,   118,   118,   119,   119,   120,   120,   121,   122,   122,
      122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
@@ -796,8 +796,8 @@ static const yytype_uint8 yyr1[] =
 static const yytype_uint8 yyr2[] =
 {
        0,     2,     3,     1,     2,     1,     1,     1,     1,     1,
-       0,     1,     1,     1,     4,     4,     4,     4,     4,     4,
-       5,     4,     4,     5,     1,     1,     1,     1,     5,    10,
+       0,     1,     1,     4,     4,     4,     4,     4,     4,     5,
+       4,     4,     5,     1,     1,     1,     1,     1,     5,    10,
       11,     3,     6,     4,     6,     9,     9,     9,    10,    10,
        6,     0,     3,     2,     1,     2,     1,     6,     1,     6,
        6,     2,     0,     2,     3,     1,     1,     0,     0,     1,
@@ -825,8 +825,8 @@ static const yytype_uint8 yydefact[] =
        0,     0,    55,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    63,
        0,     0,     0,     0,     0,     0,   169,     0,     3,    77,
-      26,    13,    27,    52,     0,    52,     0,     0,    24,    68,
-      25,   112,   113,    11,    57,    12,     5,     4,    74,     0,
+      26,    12,    27,    52,     0,    52,     0,     0,    24,    68,
+      25,   112,   113,    11,    57,    23,     5,     4,    74,     0,
       76,   121,   120,     0,   172,   123,   169,    70,     0,    71,
      110,   169,   168,   169,   114,   130,   116,     0,   136,     0,
      137,     0,   138,   143,   139,   141,   152,   111,     0,    53,
@@ -843,11 +843,11 @@ static const yytype_uint8 yydefact[] =
       59,    58,    51,    58,     6,    57,    57,    31,     0,    57,
       87,    88,    85,    86,    89,    90,    82,    93,    94,    95,
       92,    78,    79,    80,    81,    83,    84,   161,     0,   124,
-     173,    72,    73,   131,   144,   160,    14,    15,    16,    17,
-      22,    19,     0,     0,    21,    18,   160,   127,   135,   102,
+     173,    72,    73,   131,   144,   160,    13,    14,    15,    16,
+      21,    18,     0,     0,    20,    17,   160,   127,   135,   102,
        0,   104,     0,   106,     0,   108,     0,   100,   101,   133,
      125,   169,   171,    60,    61,     0,     0,    58,     0,    33,
-      58,     0,   167,     0,    23,    20,     0,     0,     0,     0,
+      58,     0,   167,     0,    22,    19,     0,     0,     0,     0,
        0,     0,    28,     0,     0,    57,    58,     0,   162,     0,
       57,   167,   167,   103,   105,   107,   109,   126,     0,    58,
       34,     7,    57,     0,    40,    32,   163,   158,    57,    57,
@@ -986,7 +986,7 @@ static const yytype_int16 yytable[] =
       36,    37,    38,     0,     0,    39,    40,    41,    42,     0,
        0,    43,    44,     0,     0,     0,     0,    45,     0,     0,
        0,    46,     2,     3,     4,     5,     0,     6,     7,     8,
-       9,    10,     0,    11,    12,    13,     0,    14,    68,    16,
+       9,    10,     0,    11,    12,    13,     0,    14,    15,    16,
        0,    17,   324,    18,     0,     0,     0,    19,     0,    20,
       21,    22,     0,     0,     0,     0,     0,     0,     0,    24,
       25,    26,     0,     0,     0,    27,     0,     0,     0,     0,
@@ -996,7 +996,7 @@ static const yytype_int16 yytable[] =
       42,     0,     0,    43,    44,     0,     0,     0,    66,    45,
        0,     0,     0,    46,     2,     3,     4,     5,     0,     6,
        7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
-      68,    16,     0,    17,     0,    18,     0,     0,     0,    19,
+      15,    16,     0,    17,     0,    18,     0,     0,     0,    19,
        0,    20,    21,    22,     0,     0,     0,     0,     0,     0,
        0,    24,    25,    26,     0,     0,     0,    27,     0,     0,
        0,     0,     0,    30,    31,     0,    32,     0,     0,     0,
@@ -1005,7 +1005,7 @@ static const yytype_int16 yytable[] =
       40,     0,    42,     0,     0,    43,    44,     0,     0,     0,
       66,    45,     0,     0,     0,    46,     2,     3,     4,     5,
        0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,    14,    68,    16,     0,    17,     0,    18,     0,     0,
+       0,    14,    15,    16,     0,    17,     0,    18,     0,     0,
        0,    19,     0,    20,    21,    22,     0,     0,     0,     0,
        0,     0,     0,    24,    25,    26,     0,     0,     0,    27,
        0,     0,     0,     0,     0,    30,    31,     0,    32,     0,
@@ -1014,7 +1014,7 @@ static const yytype_int16 yytable[] =
        0,    39,    40,     0,    42,     0,     0,    43,    44,     0,
        0,     0,     0,    45,     0,     0,     0,    46,     2,     3,
        4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,    14,    68,    16,   208,    17,     0,    18,
+      12,    13,     0,    14,    15,    16,   208,    17,     0,    18,
        0,     0,     0,    19,     0,    20,    21,   135,   136,     0,
        0,   137,   138,   139,   140,    24,   141,    26,     0,   142,
      143,   144,     0,     0,     0,     0,     0,    30,    31,     0,
@@ -2188,8 +2188,8 @@ yyreduce:
     { g_lingo->_inCond = false; ;}
     break;
 
-  case 14:
-#line 163 "engines/director/lingo/lingo-gr.y"
+  case 13:
+#line 162 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str());
@@ -2198,25 +2198,25 @@ yyreduce:
 		delete (yyvsp[(4) - (4)].s); ;}
     break;
 
-  case 15:
-#line 169 "engines/director/lingo/lingo-gr.y"
+  case 14:
+#line 168 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_assign);
 			(yyval.code) = (yyvsp[(2) - (4)].code); ;}
     break;
 
-  case 16:
-#line 172 "engines/director/lingo/lingo-gr.y"
+  case 15:
+#line 171 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_after); ;}
     break;
 
-  case 17:
-#line 173 "engines/director/lingo/lingo-gr.y"
+  case 16:
+#line 172 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_before); ;}
     break;
 
-  case 18:
-#line 174 "engines/director/lingo/lingo-gr.y"
+  case 17:
+#line 173 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2225,8 +2225,8 @@ yyreduce:
 		delete (yyvsp[(2) - (4)].s); ;}
     break;
 
-  case 19:
-#line 180 "engines/director/lingo/lingo-gr.y"
+  case 18:
+#line 179 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2236,8 +2236,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(4) - (4)].code); ;}
     break;
 
-  case 20:
-#line 187 "engines/director/lingo/lingo-gr.y"
+  case 19:
+#line 186 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2246,8 +2246,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(5) - (5)].code); ;}
     break;
 
-  case 21:
-#line 193 "engines/director/lingo/lingo-gr.y"
+  case 20:
+#line 192 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2256,8 +2256,8 @@ yyreduce:
 		delete (yyvsp[(2) - (4)].s); ;}
     break;
 
-  case 22:
-#line 199 "engines/director/lingo/lingo-gr.y"
+  case 21:
+#line 198 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2267,8 +2267,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(4) - (4)].code); ;}
     break;
 
-  case 23:
-#line 206 "engines/director/lingo/lingo-gr.y"
+  case 22:
+#line 205 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index d1a33ef..fe4030e 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -156,7 +156,6 @@ then: tTHEN { g_lingo->_inCond = false; }
 
 programline: /* empty */
 	| defn
-	| macro
 	| stmt
 	;
 
@@ -211,7 +210,8 @@ asgn: tPUT expr tINTO ID 		{
 		$$ = $5; }
 	;
 
-stmtoneliner: expr
+stmtoneliner: macro
+	| expr
 	| proc
 	;
 
diff --git a/engines/director/lingo/tests/macros.lingo b/engines/director/lingo/tests/macros.lingo
index 7ffa557..4282d6c 100644
--- a/engines/director/lingo/tests/macros.lingo
+++ b/engines/director/lingo/tests/macros.lingo
@@ -21,6 +21,7 @@ exit
 end if
 if x >1 then
 put x
+check x, 5
 exit
 end if
 


Commit: 6060ec7fcc1982a1f46526197d48c358961466a9
    https://github.com/scummvm/scummvm/commit/6060ec7fcc1982a1f46526197d48c358961466a9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-02T20:50:14+01:00

Commit Message:
DIRECTOR: LINGO: Fix debug output

Changed paths:
    engines/director/lingo/lingo-codegen.cpp


diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 446c5fa..d9a55c8 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -251,13 +251,13 @@ Symbol *Lingo::define(Common::String &name, int start, int nargs, Common::String
 			_currentScript->remove_at(i);
 		}
 
-	if (debugChannelSet(1, kDebugLingoExec)) {
+	if (debugChannelSet(1, kDebugLingoCompile)) {
 		uint pc = 0;
 		while (pc < sym->u.defn->size()) {
 			Common::String instr = g_lingo->decodeInstruction(sym->u.defn, pc, &pc);
-			debugC(1, kDebugLingoExec, "[%5d] %s", pc, instr.c_str());
+			debugC(1, kDebugLingoCompile, "[%5d] %s", pc, instr.c_str());
 		}
-		debugC(1, kDebugLingoExec, "<end define code>");
+		debugC(1, kDebugLingoCompile, "<end define code>");
 	}
 
 	return sym;


Commit: bbc8b177ed75f83187116ead882a151b5c29c952
    https://github.com/scummvm/scummvm/commit/bbc8b177ed75f83187116ead882a151b5c29c952
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-02T21:24:17+01:00

Commit Message:
DIRECTOR: LINGO: Resolved grammar conflict for '=' vs tEQ

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index b462393..d0fc362 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -540,16 +540,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  127
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1755
+#define YYLAST   1764
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  106
+#define YYNTOKENS  105
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  49
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  173
+#define YYNRULES  172
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  369
+#define YYNSTATES  367
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -562,15 +562,15 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      98,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      97,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,    97,    92,     2,
-      99,   100,    95,    93,   105,    94,     2,    96,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    96,    91,     2,
+      98,    99,    94,    92,   104,    93,     2,    95,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     102,    91,   101,     2,     2,     2,     2,     2,     2,     2,
+     101,     2,   100,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   103,     2,   104,     2,     2,     2,     2,     2,     2,
+       2,   102,     2,   103,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -605,116 +605,116 @@ static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     7,     9,    12,    14,    16,    18,    20,
       22,    23,    25,    27,    32,    37,    42,    47,    52,    57,
-      63,    68,    73,    79,    81,    83,    85,    87,    89,    95,
-     106,   118,   122,   129,   134,   141,   151,   161,   171,   182,
-     193,   200,   201,   205,   208,   210,   213,   215,   222,   224,
-     231,   238,   241,   242,   245,   249,   251,   253,   254,   255,
-     257,   260,   263,   267,   269,   271,   273,   275,   277,   279,
-     281,   284,   287,   292,   297,   299,   301,   304,   306,   310,
-     314,   318,   322,   326,   330,   334,   338,   342,   346,   350,
-     354,   358,   361,   365,   369,   373,   377,   380,   383,   387,
-     391,   396,   401,   406,   413,   418,   425,   430,   437,   442,
-     449,   452,   455,   457,   459,   462,   464,   467,   470,   473,
-     475,   478,   481,   483,   486,   491,   496,   503,   508,   511,
-     515,   517,   521,   523,   527,   529,   533,   536,   539,   542,
-     545,   549,   552,   555,   557,   561,   564,   567,   570,   574,
-     577,   578,   582,   583,   592,   595,   596,   605,   614,   621,
-     624,   625,   627,   631,   636,   637,   639,   643,   644,   647,
-     648,   650,   654,   656
+      62,    67,    73,    75,    77,    79,    81,    83,    89,   100,
+     112,   116,   123,   128,   135,   145,   155,   165,   176,   187,
+     194,   195,   199,   202,   204,   207,   209,   216,   218,   225,
+     232,   235,   236,   239,   243,   245,   247,   248,   249,   251,
+     254,   257,   261,   263,   265,   267,   269,   271,   273,   275,
+     278,   281,   286,   291,   293,   295,   298,   300,   304,   308,
+     312,   316,   320,   324,   328,   332,   336,   340,   344,   348,
+     352,   355,   359,   363,   367,   371,   374,   377,   381,   385,
+     390,   395,   400,   407,   412,   419,   424,   431,   436,   443,
+     446,   449,   451,   453,   456,   458,   461,   464,   467,   469,
+     472,   475,   477,   480,   485,   490,   497,   502,   505,   509,
+     511,   515,   517,   521,   523,   527,   530,   533,   536,   539,
+     543,   546,   549,   551,   555,   558,   561,   564,   568,   571,
+     572,   576,   577,   586,   589,   590,   599,   608,   615,   618,
+     619,   621,   625,   630,   631,   633,   637,   638,   641,   642,
+     644,   648,   650
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     107,     0,    -1,   107,   108,   113,    -1,   113,    -1,     1,
-     108,    -1,    98,    -1,    53,    -1,    58,    -1,    36,    -1,
-      52,    -1,    -1,   145,    -1,   116,    -1,    49,   134,    42,
-      28,    -1,    49,   134,    42,   135,    -1,    49,   134,    75,
-     134,    -1,    49,   134,    76,   134,    -1,    51,    28,    91,
-     134,    -1,    51,    13,    91,   134,    -1,    51,    14,   134,
-      91,   134,    -1,    51,    28,    54,   134,    -1,    51,    13,
-      54,   134,    -1,    51,    14,   134,    54,   134,    -1,   152,
-      -1,   134,    -1,   136,    -1,   115,    -1,   117,    -1,   125,
-     123,   131,   130,    32,    -1,   126,    91,   134,   130,    54,
-     134,   130,   131,   130,    32,    -1,   126,    91,   134,   130,
-      34,    54,   134,   130,   131,   130,    32,    -1,   132,   115,
-     130,    -1,   133,   134,   108,   131,   130,    32,    -1,   133,
-     134,    54,   134,    -1,   127,   123,   109,   131,   130,    32,
-      -1,   127,   123,   109,   131,   130,   110,   131,   130,    32,
-      -1,   127,   123,   109,   131,   130,   129,   119,   130,    32,
-      -1,   127,   123,   109,   131,   130,   110,   129,   115,   130,
-      -1,   127,   123,   112,   129,   115,   130,   120,   130,   118,
-     130,    -1,   127,   123,   112,   129,   115,   130,   110,   129,
-     115,   130,    -1,   127,   123,   112,   129,   115,   130,    -1,
-      -1,   110,   129,   115,    -1,   119,   122,    -1,   122,    -1,
-     120,   121,    -1,   121,    -1,   128,   123,   112,   129,   116,
-     130,    -1,   120,    -1,   128,   123,   112,   129,   131,   130,
-      -1,   128,   123,   109,   129,   131,   130,    -1,   124,   134,
-      -1,    -1,    50,    57,    -1,    50,    56,    28,    -1,    41,
-      -1,   111,    -1,    -1,    -1,   129,    -1,   131,   108,    -1,
-     131,   116,    -1,    55,    28,   112,    -1,    87,    -1,    12,
-      -1,    15,    -1,    31,    -1,    29,    -1,   135,    -1,    23,
-      -1,    24,   134,    -1,    25,   154,    -1,    25,    99,   154,
-     100,    -1,    28,    99,   153,   100,    -1,    28,    -1,    13,
-      -1,    14,   134,    -1,   114,    -1,   134,    93,   134,    -1,
-     134,    94,   134,    -1,   134,    95,   134,    -1,   134,    96,
-     134,    -1,   134,    74,   134,    -1,   134,   101,   134,    -1,
-     134,   102,   134,    -1,   134,    69,   134,    -1,   134,    70,
-     134,    -1,   134,    65,   134,    -1,   134,    66,   134,    -1,
-     134,    71,   134,    -1,   134,    72,   134,    -1,    73,   134,
-      -1,   134,    92,   134,    -1,   134,    77,   134,    -1,   134,
-      78,   134,    -1,   134,    79,   134,    -1,    93,   134,    -1,
-      94,   134,    -1,    99,   134,   100,    -1,   103,   153,   104,
-      -1,    84,   134,    85,   134,    -1,    84,   134,    86,   134,
-      -1,    80,   134,    47,   134,    -1,    80,   134,    54,   134,
-      47,   134,    -1,    81,   134,    47,   134,    -1,    81,   134,
-      54,   134,    47,   134,    -1,    82,   134,    47,   134,    -1,
-      82,   134,    54,   134,    47,   134,    -1,    83,   134,    47,
-     134,    -1,    83,   134,    54,   134,    47,   134,    -1,    27,
-     134,    -1,    49,   134,    -1,   140,    -1,   143,    -1,    37,
-      50,    -1,    37,    -1,    39,   137,    -1,    88,   138,    -1,
-      64,   139,    -1,    17,    -1,    19,   134,    -1,    18,   134,
-      -1,    18,    -1,    20,   154,    -1,    20,    99,   154,   100,
-      -1,    90,    99,    28,   100,    -1,    90,    99,    28,   105,
-     153,   100,    -1,    61,   134,    56,   134,    -1,    61,   134,
-      -1,    21,    28,   153,    -1,    28,    -1,   137,   105,    28,
-      -1,    28,    -1,   138,   105,    28,    -1,    28,    -1,   139,
-     105,    28,    -1,    40,    43,    -1,    40,    46,    -1,    40,
-      48,    -1,    40,   141,    -1,    40,   141,   142,    -1,    40,
-     142,    -1,    38,   134,    -1,   134,    -1,    47,    45,   134,
-      -1,    45,   134,    -1,    62,    63,    -1,    62,   141,    -1,
-      62,   141,   142,    -1,    62,   142,    -1,    -1,    33,   144,
-     153,    -1,    -1,    44,    28,   146,   129,   149,   108,   151,
-     131,    -1,    59,    28,    -1,    -1,    60,    28,   147,   129,
-     149,   108,   151,   131,    -1,   148,   129,   149,   108,   151,
-     131,    32,   150,    -1,   148,   129,   149,   108,   151,   131,
-      -1,    89,    28,    -1,    -1,    28,    -1,   149,   105,    28,
-      -1,   149,   108,   105,    28,    -1,    -1,    28,    -1,   150,
-     105,    28,    -1,    -1,    28,   154,    -1,    -1,   134,    -1,
-     153,   105,   134,    -1,   134,    -1,   154,   105,   134,    -1
+     106,     0,    -1,   106,   107,   112,    -1,   112,    -1,     1,
+     107,    -1,    97,    -1,    53,    -1,    58,    -1,    36,    -1,
+      52,    -1,    -1,   144,    -1,   115,    -1,    49,   133,    42,
+      28,    -1,    49,   133,    42,   134,    -1,    49,   133,    75,
+     133,    -1,    49,   133,    76,   133,    -1,    51,    28,    69,
+     133,    -1,    51,    13,    69,   133,    -1,    51,    28,    54,
+     133,    -1,    51,    13,    54,   133,    -1,    51,    14,   133,
+      54,   133,    -1,   151,    -1,   133,    -1,   135,    -1,   114,
+      -1,   116,    -1,   124,   122,   130,   129,    32,    -1,   125,
+      69,   133,   129,    54,   133,   129,   130,   129,    32,    -1,
+     125,    69,   133,   129,    34,    54,   133,   129,   130,   129,
+      32,    -1,   131,   114,   129,    -1,   132,   133,   107,   130,
+     129,    32,    -1,   132,   133,    54,   133,    -1,   126,   122,
+     108,   130,   129,    32,    -1,   126,   122,   108,   130,   129,
+     109,   130,   129,    32,    -1,   126,   122,   108,   130,   129,
+     128,   118,   129,    32,    -1,   126,   122,   108,   130,   129,
+     109,   128,   114,   129,    -1,   126,   122,   111,   128,   114,
+     129,   119,   129,   117,   129,    -1,   126,   122,   111,   128,
+     114,   129,   109,   128,   114,   129,    -1,   126,   122,   111,
+     128,   114,   129,    -1,    -1,   109,   128,   114,    -1,   118,
+     121,    -1,   121,    -1,   119,   120,    -1,   120,    -1,   127,
+     122,   111,   128,   115,   129,    -1,   119,    -1,   127,   122,
+     111,   128,   130,   129,    -1,   127,   122,   108,   128,   130,
+     129,    -1,   123,   133,    -1,    -1,    50,    57,    -1,    50,
+      56,    28,    -1,    41,    -1,   110,    -1,    -1,    -1,   128,
+      -1,   130,   107,    -1,   130,   115,    -1,    55,    28,   111,
+      -1,    87,    -1,    12,    -1,    15,    -1,    31,    -1,    29,
+      -1,   134,    -1,    23,    -1,    24,   133,    -1,    25,   153,
+      -1,    25,    98,   153,    99,    -1,    28,    98,   152,    99,
+      -1,    28,    -1,    13,    -1,    14,   133,    -1,   113,    -1,
+     133,    92,   133,    -1,   133,    93,   133,    -1,   133,    94,
+     133,    -1,   133,    95,   133,    -1,   133,    74,   133,    -1,
+     133,   100,   133,    -1,   133,   101,   133,    -1,   133,    69,
+     133,    -1,   133,    70,   133,    -1,   133,    65,   133,    -1,
+     133,    66,   133,    -1,   133,    71,   133,    -1,   133,    72,
+     133,    -1,    73,   133,    -1,   133,    91,   133,    -1,   133,
+      77,   133,    -1,   133,    78,   133,    -1,   133,    79,   133,
+      -1,    92,   133,    -1,    93,   133,    -1,    98,   133,    99,
+      -1,   102,   152,   103,    -1,    84,   133,    85,   133,    -1,
+      84,   133,    86,   133,    -1,    80,   133,    47,   133,    -1,
+      80,   133,    54,   133,    47,   133,    -1,    81,   133,    47,
+     133,    -1,    81,   133,    54,   133,    47,   133,    -1,    82,
+     133,    47,   133,    -1,    82,   133,    54,   133,    47,   133,
+      -1,    83,   133,    47,   133,    -1,    83,   133,    54,   133,
+      47,   133,    -1,    27,   133,    -1,    49,   133,    -1,   139,
+      -1,   142,    -1,    37,    50,    -1,    37,    -1,    39,   136,
+      -1,    88,   137,    -1,    64,   138,    -1,    17,    -1,    19,
+     133,    -1,    18,   133,    -1,    18,    -1,    20,   153,    -1,
+      20,    98,   153,    99,    -1,    90,    98,    28,    99,    -1,
+      90,    98,    28,   104,   152,    99,    -1,    61,   133,    56,
+     133,    -1,    61,   133,    -1,    21,    28,   152,    -1,    28,
+      -1,   136,   104,    28,    -1,    28,    -1,   137,   104,    28,
+      -1,    28,    -1,   138,   104,    28,    -1,    40,    43,    -1,
+      40,    46,    -1,    40,    48,    -1,    40,   140,    -1,    40,
+     140,   141,    -1,    40,   141,    -1,    38,   133,    -1,   133,
+      -1,    47,    45,   133,    -1,    45,   133,    -1,    62,    63,
+      -1,    62,   140,    -1,    62,   140,   141,    -1,    62,   141,
+      -1,    -1,    33,   143,   152,    -1,    -1,    44,    28,   145,
+     128,   148,   107,   150,   130,    -1,    59,    28,    -1,    -1,
+      60,    28,   146,   128,   148,   107,   150,   130,    -1,   147,
+     128,   148,   107,   150,   130,    32,   149,    -1,   147,   128,
+     148,   107,   150,   130,    -1,    89,    28,    -1,    -1,    28,
+      -1,   148,   104,    28,    -1,   148,   107,   104,    28,    -1,
+      -1,    28,    -1,   149,   104,    28,    -1,    -1,    28,   153,
+      -1,    -1,   133,    -1,   152,   104,   133,    -1,   133,    -1,
+     153,   104,   133,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   121,   121,   122,   123,   126,   133,   140,   147,   154,
-     157,   158,   159,   162,   168,   171,   172,   173,   179,   186,
-     192,   198,   205,   213,   214,   215,   218,   219,   224,   237,
-     255,   269,   274,   277,   282,   292,   304,   316,   326,   336,
-     346,   358,   359,   362,   363,   366,   367,   370,   378,   379,
-     385,   393,   396,   399,   402,   409,   416,   424,   427,   430,
-     431,   432,   435,   441,   445,   448,   451,   454,   457,   458,
-     461,   464,   465,   466,   469,   473,   481,   487,   488,   489,
-     490,   491,   492,   493,   494,   495,   496,   497,   498,   499,
-     500,   501,   502,   503,   504,   505,   506,   507,   508,   509,
-     510,   511,   512,   513,   514,   515,   516,   517,   518,   519,
-     522,   527,   528,   529,   530,   531,   532,   533,   534,   535,
-     538,   541,   544,   548,   549,   550,   551,   552,   553,   554,
-     557,   558,   561,   562,   565,   566,   577,   578,   579,   580,
-     584,   588,   594,   595,   598,   599,   602,   603,   607,   611,
-     615,   615,   645,   645,   650,   651,   651,   656,   663,   669,
-     671,   672,   673,   674,   677,   678,   679,   682,   686,   694,
-     695,   696,   699,   700
+       0,   120,   120,   121,   122,   125,   132,   139,   146,   153,
+     156,   157,   158,   161,   167,   170,   171,   172,   178,   185,
+     191,   198,   206,   207,   208,   211,   212,   217,   230,   248,
+     262,   267,   270,   275,   285,   297,   309,   319,   329,   339,
+     351,   352,   355,   356,   359,   360,   363,   371,   372,   378,
+     386,   389,   392,   395,   402,   409,   417,   420,   423,   424,
+     425,   428,   434,   438,   441,   444,   447,   450,   451,   454,
+     457,   458,   459,   462,   466,   474,   480,   481,   482,   483,
+     484,   485,   486,   487,   488,   489,   490,   491,   492,   493,
+     494,   495,   496,   497,   498,   499,   500,   501,   502,   503,
+     504,   505,   506,   507,   508,   509,   510,   511,   512,   515,
+     520,   521,   522,   523,   524,   525,   526,   527,   528,   531,
+     534,   537,   541,   542,   543,   544,   545,   546,   547,   550,
+     551,   554,   555,   558,   559,   570,   571,   572,   573,   577,
+     581,   587,   588,   591,   592,   595,   596,   600,   604,   608,
+     608,   638,   638,   643,   644,   644,   649,   656,   662,   664,
+     665,   666,   667,   670,   671,   672,   675,   679,   687,   688,
+     689,   692,   693
 };
 #endif
 
@@ -736,11 +736,11 @@ static const char *const yytname[] =
   "tPLAY", "tDONE", "tINSTANCE", "tGE", "tLE", "tGT", "tLT", "tEQ", "tNEQ",
   "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT",
   "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", "tSPRITE",
-  "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tME", "'='",
-  "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'",
-  "'<'", "'['", "']'", "','", "$accept", "program", "nl", "thennl",
-  "nlelse", "nlelsif", "then", "programline", "asgn", "stmtoneliner",
-  "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
+  "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tME", "'&'",
+  "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", "'<'",
+  "'['", "']'", "','", "$accept", "program", "nl", "thennl", "nlelse",
+  "nlelsif", "then", "programline", "asgn", "stmtoneliner", "stmt",
+  "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
   "elseifstmtoneliner1", "elseifstmt1", "cond", "begincond", "repeatwhile",
   "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "tell",
   "expr", "reference", "proc", "globallist", "propertylist",
@@ -764,55 +764,55 @@ static const yytype_uint16 yytoknum[] =
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,    61,    38,    43,    45,    42,    47,    37,    10,    40,
-      41,    62,    60,    91,    93,    44
+     345,    38,    43,    45,    42,    47,    37,    10,    40,    41,
+      62,    60,    91,    93,    44
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   106,   107,   107,   107,   108,   109,   110,   111,   112,
-     113,   113,   113,   114,   114,   114,   114,   114,   114,   114,
-     114,   114,   114,   115,   115,   115,   116,   116,   116,   116,
-     116,   116,   116,   116,   117,   117,   117,   117,   117,   117,
-     117,   118,   118,   119,   119,   120,   120,   121,   122,   122,
-     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-     131,   131,   132,   133,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     135,   136,   136,   136,   136,   136,   136,   136,   136,   136,
-     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
-     137,   137,   138,   138,   139,   139,   140,   140,   140,   140,
-     140,   140,   141,   141,   142,   142,   143,   143,   143,   143,
-     144,   143,   146,   145,   145,   147,   145,   145,   145,   148,
-     149,   149,   149,   149,   150,   150,   150,   151,   152,   153,
-     153,   153,   154,   154
+       0,   105,   106,   106,   106,   107,   108,   109,   110,   111,
+     112,   112,   112,   113,   113,   113,   113,   113,   113,   113,
+     113,   113,   114,   114,   114,   115,   115,   115,   115,   115,
+     115,   115,   115,   116,   116,   116,   116,   116,   116,   116,
+     117,   117,   118,   118,   119,   119,   120,   121,   121,   121,
+     122,   123,   124,   125,   126,   127,   128,   129,   130,   130,
+     130,   131,   132,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   133,   133,   133,   133,   133,   133,   134,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   136,
+     136,   137,   137,   138,   138,   139,   139,   139,   139,   139,
+     139,   140,   140,   141,   141,   142,   142,   142,   142,   143,
+     142,   145,   144,   144,   146,   144,   144,   144,   147,   148,
+     148,   148,   148,   149,   149,   149,   150,   151,   152,   152,
+     152,   153,   153
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
        0,     2,     3,     1,     2,     1,     1,     1,     1,     1,
-       0,     1,     1,     4,     4,     4,     4,     4,     4,     5,
-       4,     4,     5,     1,     1,     1,     1,     1,     5,    10,
-      11,     3,     6,     4,     6,     9,     9,     9,    10,    10,
-       6,     0,     3,     2,     1,     2,     1,     6,     1,     6,
-       6,     2,     0,     2,     3,     1,     1,     0,     0,     1,
-       2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
-       2,     2,     4,     4,     1,     1,     2,     1,     3,     3,
+       0,     1,     1,     4,     4,     4,     4,     4,     4,     4,
+       4,     5,     1,     1,     1,     1,     1,     5,    10,    11,
+       3,     6,     4,     6,     9,     9,     9,    10,    10,     6,
+       0,     3,     2,     1,     2,     1,     6,     1,     6,     6,
+       2,     0,     2,     3,     1,     1,     0,     0,     1,     2,
+       2,     3,     1,     1,     1,     1,     1,     1,     1,     2,
+       2,     4,     4,     1,     1,     2,     1,     3,     3,     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,     2,     1,     1,     2,     1,     2,     2,     2,     1,
-       2,     2,     1,     2,     4,     4,     6,     4,     2,     3,
-       1,     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,     8,     6,     2,
-       0,     1,     3,     4,     0,     1,     3,     0,     2,     0,
-       1,     3,     1,     3
+       2,     3,     3,     3,     3,     2,     2,     3,     3,     4,
+       4,     4,     6,     4,     6,     4,     6,     4,     6,     2,
+       2,     1,     1,     2,     1,     2,     2,     2,     1,     2,
+       2,     1,     2,     4,     4,     6,     4,     2,     3,     1,
+       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,     8,     6,     2,     0,
+       1,     3,     4,     0,     1,     3,     0,     2,     0,     1,
+       3,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -820,107 +820,107 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    64,    75,     0,    65,   119,   122,     0,     0,
-       0,    69,     0,     0,     0,    74,    67,    66,   150,   115,
-       0,     0,    55,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    63,
-       0,     0,     0,     0,     0,     0,   169,     0,     3,    77,
-      26,    12,    27,    52,     0,    52,     0,     0,    24,    68,
-      25,   112,   113,    11,    57,    23,     5,     4,    74,     0,
-      76,   121,   120,     0,   172,   123,   169,    70,     0,    71,
-     110,   169,   168,   169,   114,   130,   116,     0,   136,     0,
-     137,     0,   138,   143,   139,   141,   152,   111,     0,    53,
-       0,     0,     0,     0,   154,   155,   128,   146,   147,   149,
-     134,   118,    91,     0,     0,     0,     0,     0,   132,   117,
-     159,     0,    96,    97,     0,   170,     0,     1,    10,    57,
-       0,     0,     0,    58,     0,     0,     0,     0,     0,     0,
+       0,     0,    63,    74,     0,    64,   118,   121,     0,     0,
+       0,    68,     0,     0,     0,    73,    66,    65,   149,   114,
+       0,     0,    54,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    62,
+       0,     0,     0,     0,     0,     0,   168,     0,     3,    76,
+      25,    12,    26,    51,     0,    51,     0,     0,    23,    67,
+      24,   111,   112,    11,    56,    22,     5,     4,    73,     0,
+      75,   120,   119,     0,   171,   122,   168,    69,     0,    70,
+     109,   168,   167,   168,   113,   129,   115,     0,   135,     0,
+     136,     0,   137,   142,   138,   140,   151,   110,     0,    52,
+       0,     0,     0,     0,   153,   154,   127,   145,   146,   148,
+     133,   117,    90,     0,     0,     0,     0,     0,   131,   116,
+     158,     0,    95,    96,     0,   169,     0,     1,    10,    56,
+       0,     0,     0,    57,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   160,   169,     0,   172,     0,     0,   129,     0,
-     170,     0,   151,     0,   142,   145,     0,   140,    57,     0,
-       0,     0,    54,     0,     0,     0,     0,     0,     9,    62,
-      57,     0,   148,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    98,    99,     0,     2,
-      59,    58,    51,    58,     6,    57,    57,    31,     0,    57,
-      87,    88,    85,    86,    89,    90,    82,    93,    94,    95,
-      92,    78,    79,    80,    81,    83,    84,   161,     0,   124,
-     173,    72,    73,   131,   144,   160,    13,    14,    15,    16,
-      21,    18,     0,     0,    20,    17,   160,   127,   135,   102,
-       0,   104,     0,   106,     0,   108,     0,   100,   101,   133,
-     125,   169,   171,    60,    61,     0,     0,    58,     0,    33,
-      58,     0,   167,     0,    22,    19,     0,     0,     0,     0,
-       0,     0,    28,     0,     0,    57,    58,     0,   162,     0,
-      57,   167,   167,   103,   105,   107,   109,   126,     0,    58,
-      34,     7,    57,     0,    40,    32,   163,   158,    57,    57,
-      58,    57,    59,    58,     8,    56,    58,    48,    46,    44,
-      52,    57,    58,    52,   164,   153,   156,    57,    58,    58,
-       0,    43,     0,    45,     0,     0,    41,     0,   165,   157,
-      58,     0,    37,    35,    36,    57,    57,    58,    57,    58,
-      57,     0,     0,    29,    57,    57,    39,     0,    38,     0,
-     166,    30,    58,    58,    58,    42,    50,    47,    49
+       0,     0,   159,   168,     0,   171,     0,     0,   128,     0,
+     169,     0,   150,     0,   141,   144,     0,   139,    56,     0,
+       0,     0,    53,     0,     0,     0,     0,     0,     9,    61,
+      56,     0,   147,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    97,    98,     0,     2,
+      58,    57,    50,    57,     6,    56,    56,    30,     0,    56,
+      86,    87,    84,    85,    88,    89,    81,    92,    93,    94,
+      91,    77,    78,    79,    80,    82,    83,   160,     0,   123,
+     172,    71,    72,   130,   143,   159,    13,    14,    15,    16,
+      20,    18,     0,    19,    17,   159,   126,   134,   101,     0,
+     103,     0,   105,     0,   107,     0,    99,   100,   132,   124,
+     168,   170,    59,    60,     0,     0,    57,     0,    32,    57,
+       0,   166,     0,    21,     0,     0,     0,     0,     0,     0,
+      27,     0,     0,    56,    57,     0,   161,     0,    56,   166,
+     166,   102,   104,   106,   108,   125,     0,    57,    33,     7,
+      56,     0,    39,    31,   162,   157,    56,    56,    57,    56,
+      58,    57,     8,    55,    57,    47,    45,    43,    51,    56,
+      57,    51,   163,   152,   155,    56,    57,    57,     0,    42,
+       0,    44,     0,     0,    40,     0,   164,   156,    57,     0,
+      36,    34,    35,    56,    56,    57,    56,    57,    56,     0,
+       0,    28,    56,    56,    38,     0,    37,     0,   165,    29,
+      57,    57,    57,    41,    49,    46,    48
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    47,   263,   205,   302,   315,   179,    48,    49,    50,
-     264,    52,   349,   316,   317,   318,   319,   129,   130,    53,
-      54,    55,   323,   200,   207,   201,    56,    57,    58,    59,
+      -1,    47,   262,   205,   300,   313,   179,    48,    49,    50,
+     263,    52,   347,   314,   315,   316,   317,   129,   130,    53,
+      54,    55,   321,   200,   207,   201,    56,    57,    58,    59,
       60,    86,   119,   111,    61,    94,    95,    62,    83,    63,
-     168,   180,    64,   228,   339,   290,    65,   161,    75
+     168,   180,    64,   228,   337,   288,    65,   161,    75
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -283
+#define YYPACT_NINF -288
 static const yytype_int16 yypact[] =
 {
-     356,   -49,  -283,  -283,  1013,  -283,  -283,  1013,  1013,  1053,
-      23,  -283,  1013,  1126,  1013,  1166,  -283,  -283,  -283,    13,
-      27,   899,  -283,    41,  1013,    49,    48,    57,    68,    90,
-    1013,   940,    92,  1013,  1013,  1013,  1013,  1013,  1013,  -283,
-      96,    99,    56,  1013,  1013,  1013,  1013,     5,  -283,  -283,
-    -283,  -283,  -283,  -283,    71,  -283,   816,  1013,  1619,  -283,
-    -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,    64,  1013,
-    1619,  1619,  1619,  1013,  1619,    59,  1013,  1619,  1013,    59,
-    1619,  1013,    59,  1013,  -283,  -283,    61,  1013,  -283,  1013,
-    -283,   122,  -283,  1619,    36,  -283,  -283,   157,   140,  -283,
-     -39,  1013,   -38,   119,  -283,  -283,  1513,  -283,    36,  -283,
-    -283,    69,    -7,  1207,  1241,  1275,  1309,  1547,  -283,    72,
-    -283,   150,    -7,    -7,  1581,  1619,    18,  -283,   448,  -283,
-    1013,  1013,   101,  -283,   792,  1013,  1013,  1013,  1013,  1013,
-    1013,  1013,  1013,  1013,  1013,  1013,  1013,  1013,  1013,  1013,
-    1013,  1013,   151,  1013,   157,  1581,   -74,  1013,    76,     8,
-    1581,    10,    76,   165,  1619,  1619,  1013,  -283,  -283,   130,
-    1013,  1013,  -283,  1013,  1013,  1479,  1013,  1013,  -283,  -283,
-    -283,  1013,  -283,   167,  1013,  1013,  1013,  1013,  1013,  1013,
-    1013,  1013,  1013,  1013,   168,    11,  -283,  -283,  1013,  -283,
-    -283,   632,  1619,  1619,  -283,  -283,  -283,  -283,  1013,  -283,
-      -3,    -3,    -3,    -3,  1653,  1653,    -7,  1619,    -3,    -3,
-     -36,    30,    30,    -7,    -7,  1619,  1619,  -283,     4,  -283,
-    1619,  -283,  -283,  -283,  1619,   151,  -283,  -283,  1619,  1619,
-    1619,  1619,  1013,  1013,  1619,  1619,   151,  1619,  -283,  1619,
-    1343,  1619,  1377,  1619,  1411,  1619,  1445,  1619,  1619,  -283,
-    -283,  1013,  1619,  -283,  -283,   166,    -6,   632,   816,  1619,
-     632,   177,   103,     4,  1619,  1619,     4,  1013,  1013,  1013,
-    1013,    12,  -283,   156,  1013,    -8,  -283,   179,  -283,   184,
-    -283,   103,   103,  1619,  1619,  1619,  1619,  -283,  1013,  1619,
-    -283,  -283,  -283,   178,   -11,  -283,  -283,   540,  -283,  -283,
-    1619,  -283,   816,   632,  -283,  -283,   178,   178,  -283,  -283,
-    -283,  -283,   178,  -283,   187,   632,   632,  -283,   632,  -283,
-     185,  -283,   186,  -283,   101,   816,   158,   119,  -283,   115,
-     632,   189,  -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,
-    -283,   197,   198,  -283,  -283,   724,  -283,   816,  -283,   724,
-    -283,  -283,   632,  -283,   632,  -283,  -283,  -283,  -283
+     354,   -81,  -288,  -288,  1007,  -288,  -288,  1007,  1007,  1047,
+      37,  -288,  1007,  1123,  1007,  1163,  -288,  -288,  -288,    41,
+      46,   891,  -288,    70,  1007,    38,    12,    90,    97,    99,
+    1007,   931,   104,  1007,  1007,  1007,  1007,  1007,  1007,  -288,
+     127,   132,    63,  1007,  1007,  1007,  1007,     4,  -288,  -288,
+    -288,  -288,  -288,  -288,    93,  -288,   809,  1007,  1630,  -288,
+    -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,    65,  1007,
+    1630,  1630,  1630,  1007,  1630,    60,  1007,  1630,  1007,    60,
+    1630,  1007,    60,  1007,  -288,  -288,    62,  1007,  -288,  1007,
+    -288,   122,  -288,  1630,    36,  -288,  -288,  1197,   140,  -288,
+      -3,  1007,    -2,   119,  -288,  -288,  1527,  -288,    36,  -288,
+    -288,    73,   -39,  1230,  1263,  1296,  1329,  1560,  -288,    74,
+    -288,   146,   -39,   -39,  1593,  1630,    20,  -288,   445,  -288,
+    1007,  1007,    52,  -288,  1494,  1007,  1007,  1007,  1007,  1007,
+    1007,  1007,  1007,  1007,  1007,  1007,  1007,  1007,  1007,  1007,
+    1007,  1007,   151,  1007,  1197,  1593,   -77,  1007,    77,   -28,
+    1593,   -14,    77,   165,  1630,  1630,  1007,  -288,  -288,   126,
+    1007,  1007,  -288,  1007,  1007,   785,  1007,  1007,  -288,  -288,
+    -288,  1007,  -288,   167,  1007,  1007,  1007,  1007,  1007,  1007,
+    1007,  1007,  1007,  1007,   168,    18,  -288,  -288,  1007,  -288,
+    -288,   627,  1630,  1630,  -288,  -288,  -288,  -288,  1007,  -288,
+      15,    15,    15,    15,  1663,  1663,   -39,  1630,    15,    15,
+      19,   -46,   -46,   -39,   -39,  1630,  1630,  -288,   -44,  -288,
+    1630,  -288,  -288,  -288,  1630,   151,  -288,  -288,  1630,  1630,
+    1630,    15,  1007,  1630,    15,   151,  1630,  -288,  1630,  1362,
+    1630,  1395,  1630,  1428,  1630,  1461,  1630,  1630,  -288,  -288,
+    1007,  1630,  -288,  -288,   166,    24,   627,   809,  1630,   627,
+     171,   102,   -44,  1630,   -44,  1007,  1007,  1007,  1007,    27,
+    -288,   155,  1007,    -8,  -288,   178,  -288,   183,  -288,   102,
+     102,  1630,  1630,  1630,  1630,  -288,  1007,  1630,  -288,  -288,
+    -288,   177,     5,  -288,  -288,   536,  -288,  -288,  1630,  -288,
+     809,   627,  -288,  -288,   177,   177,  -288,  -288,  -288,  -288,
+     177,  -288,   186,   627,   627,  -288,   627,  -288,   184,  -288,
+     185,  -288,    52,   809,   157,   119,  -288,   114,   627,   188,
+    -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,   193,
+     190,  -288,  -288,   718,  -288,   809,  -288,   718,  -288,  -288,
+     627,  -288,   627,  -288,  -288,  -288,  -288
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -283,  -283,    17,   -97,  -282,  -283,  -128,   111,  -283,   -55,
-       0,  -283,  -283,  -283,   -64,  -203,   -73,   -53,  -283,  -283,
-    -283,  -283,  -276,   -47,     1,  -108,  -283,  -283,    -1,    75,
-    -283,  -283,  -283,  -283,  -283,   217,   -21,  -283,  -283,  -283,
-    -283,  -283,  -283,  -168,  -283,  -131,  -283,   -37,     6
+    -288,  -288,    17,  -108,  -287,  -288,  -127,    98,  -288,   -55,
+       0,  -288,  -288,  -288,   -75,  -218,   -89,   -53,  -288,  -288,
+    -288,  -288,  -244,   -47,     1,  -106,  -288,  -288,    -1,    59,
+    -288,  -288,  -288,  -288,  -288,   198,   -21,  -288,  -288,  -288,
+    -288,  -288,  -288,  -176,  -288,  -132,  -288,   -37,     6
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -930,362 +930,364 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -11
 static const yytype_int16 yytable[] =
 {
-      51,   133,   132,    70,   206,   127,    71,    72,    74,   126,
-     109,    77,    74,    80,    74,   173,   176,   152,    67,    79,
-      93,    82,   321,    97,   300,   314,   229,   320,   283,   106,
-      93,   157,   112,   113,   114,   115,   116,   117,   141,   158,
-     320,   142,   122,   123,   124,   125,   162,   301,   284,    66,
-     301,    76,   174,   177,   348,    85,   134,   146,   147,   148,
-     149,   100,   101,    84,   128,   150,   151,   273,   154,    96,
-     142,   141,   155,   167,   142,   125,   102,   155,   276,   156,
-     160,    89,   125,    91,   159,   103,   164,   182,   165,   145,
-     146,   147,   148,   149,   150,   151,   104,   267,   150,   151,
-     175,   270,    66,    66,   141,    98,    99,   142,   231,   271,
-     232,   260,   297,   157,   333,   198,   261,   198,   105,   333,
-     110,   235,   197,   198,   118,   148,   149,   120,    51,   202,
-     203,   150,   151,   246,   210,   211,   212,   213,   214,   215,
+      51,   133,   132,    70,   127,   206,    71,    72,    74,   126,
+     109,    77,    74,    80,    74,   319,    66,   152,    67,    79,
+      93,    82,   229,    97,   298,   100,   101,   157,   141,   106,
+      93,   142,   112,   113,   114,   115,   116,   117,   142,   158,
+     102,   312,   122,   123,   124,   125,   162,   346,   148,   149,
+     299,   173,   176,    66,   150,   151,   134,   318,   281,   272,
+     270,   150,   151,   299,   128,    76,   174,   177,   154,   274,
+     318,   231,   155,   167,    85,   125,   157,   155,   282,   156,
+     160,    89,   125,    91,   159,   232,   164,   182,   165,   141,
+     198,    84,   142,   141,    98,    99,   142,   331,    96,   266,
+     175,    66,   331,   269,   178,   204,   145,   146,   147,   148,
+     149,   146,   147,   148,   149,   150,   151,   259,   103,   150,
+     151,   235,   260,   197,   198,   104,   295,   105,    51,   202,
+     203,   198,   110,   245,   210,   211,   212,   213,   214,   215,
      216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   209,   125,   178,   204,   121,   230,    14,   236,   268,
-     308,   309,   131,   153,   157,   234,   163,   166,   172,   238,
-     239,   178,   240,   241,   183,   244,   245,   194,   195,   227,
-     247,   198,   307,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   233,   313,   248,   259,   262,   282,   169,
-     325,   326,   265,   328,   266,   288,   346,   269,   289,   350,
-     298,   305,   306,   286,   314,   338,   301,   343,   344,   340,
-     351,   353,   135,   136,   281,   360,   137,   138,   139,   140,
-     361,   141,   170,   171,   142,   143,   144,   345,   303,   199,
-     322,   274,   275,   331,   237,   272,   362,   364,   108,   145,
-     146,   147,   148,   149,     0,   312,     0,   329,   150,   151,
-     125,     0,     0,     0,     0,     0,     0,   334,   285,     0,
-     337,   287,     0,     0,   335,     0,   293,   294,   295,   296,
-     347,     0,     0,   299,     0,     0,     0,   304,     0,     0,
-     291,     0,     0,   292,     0,     0,     0,   310,   354,   355,
-     311,   357,   365,   359,     0,     0,     0,     0,     0,     0,
-       0,   327,     0,     0,   330,     0,     0,   332,     0,     0,
-       0,     0,     0,   336,     0,     0,     0,     0,     0,   341,
-     342,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   352,     0,     0,     0,     0,     0,     0,   356,     0,
-     358,     0,     0,     0,     0,   363,   -10,     1,     0,   363,
-       0,     0,     0,   366,   367,   368,     0,     0,     2,     3,
+     226,   209,   125,    14,   236,   118,   230,   306,   307,   267,
+     120,   121,   131,   153,   157,   234,   163,   166,   172,   238,
+     239,   178,   240,   241,   195,   243,   244,   183,   194,   227,
+     246,   198,   305,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   233,   311,   247,   258,   261,   280,   286,
+     323,   324,   264,   326,   265,   344,   287,   268,   348,   296,
+     303,   304,   284,   312,   336,   299,   341,   342,   349,   338,
+     351,   358,   359,   279,   343,   329,   199,   320,   237,   108,
+       0,     0,     0,     0,     0,     0,   301,     0,     0,     0,
+       0,   273,     0,     0,     0,   271,   360,   362,     0,     0,
+       0,     0,     0,   310,     0,   327,     0,     0,     0,   125,
+       0,     0,     0,     0,     0,   332,     0,   283,   335,     0,
+     285,     0,   333,     0,   291,   292,   293,   294,   345,     0,
+       0,   297,     0,     0,     0,   302,     0,     0,     0,   289,
+       0,   290,     0,     0,     0,   308,   352,   353,   309,   355,
+     363,   357,     0,     0,     0,     0,     0,     0,     0,   325,
+       0,     0,   328,     0,     0,   330,     0,     0,     0,     0,
+       0,   334,     0,     0,     0,     0,     0,   339,   340,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   350,
+       0,     0,     0,     0,     0,     0,   354,     0,   356,     0,
+       0,     0,     0,   361,   -10,     1,     0,   361,     0,     0,
+       0,   364,   365,   366,     0,     0,     2,     3,     4,     5,
+       0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
+       0,    14,    15,    16,     0,    17,     0,    18,     0,     0,
+       0,    19,     0,    20,    21,    22,     0,     0,    23,     0,
+       0,     0,     0,    24,    25,    26,     0,     0,     0,    27,
+       0,     0,     0,    28,    29,    30,    31,     0,    32,     0,
+       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
+       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
+       0,    39,    40,    41,    42,     0,    43,    44,     0,     0,
+       0,   -10,    45,     0,     0,     0,    46,     2,     3,     4,
+       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
+      13,     0,    14,    15,    16,     0,    17,     0,    18,     0,
+       0,     0,    19,     0,    20,    21,    22,     0,     0,    23,
+       0,     0,     0,     0,    24,    25,    26,     0,     0,     0,
+      27,     0,     0,     0,    28,    29,    30,    31,     0,    32,
+       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
+       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
+       0,     0,    39,    40,    41,    42,     0,    43,    44,     0,
+       0,     0,     0,    45,     0,     0,     0,    46,     2,     3,
        4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,    14,    15,    16,     0,    17,     0,    18,
+      12,    13,     0,    14,    15,    16,     0,    17,   322,    18,
        0,     0,     0,    19,     0,    20,    21,    22,     0,     0,
-      23,     0,     0,     0,     0,    24,    25,    26,     0,     0,
-       0,    27,     0,     0,     0,    28,    29,    30,    31,     0,
+       0,     0,     0,     0,     0,    24,    25,    26,     0,     0,
+       0,    27,     0,     0,     0,     0,     0,    30,    31,     0,
       32,     0,     0,     0,     0,     0,     0,     0,     0,    33,
        0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
-      38,     0,     0,    39,    40,    41,    42,     0,     0,    43,
-      44,     0,     0,     0,   -10,    45,     0,     0,     0,    46,
+      38,     0,     0,    39,    40,     0,    42,     0,    43,    44,
+       0,     0,     0,    66,    45,     0,     0,     0,    46,     2,
+       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
+      11,    12,    13,     0,    14,    15,    16,     0,    17,     0,
+      18,     0,     0,     0,    19,     0,    20,    21,    22,     0,
+       0,     0,     0,     0,     0,     0,    24,    25,    26,     0,
+       0,     0,    27,     0,     0,     0,     0,     0,    30,    31,
+       0,    32,     0,     0,     0,     0,     0,     0,     0,     0,
+      33,     0,     0,     0,     0,     0,     0,    34,    35,    36,
+      37,    38,     0,     0,    39,    40,     0,    42,     0,    43,
+      44,     0,     0,     0,    66,    45,     0,     0,     0,    46,
        2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
        0,    11,    12,    13,     0,    14,    15,    16,     0,    17,
        0,    18,     0,     0,     0,    19,     0,    20,    21,    22,
-       0,     0,    23,     0,     0,     0,     0,    24,    25,    26,
-       0,     0,     0,    27,     0,     0,     0,    28,    29,    30,
+       0,     0,     0,     0,     0,     0,     0,    24,    25,    26,
+       0,     0,     0,    27,     0,     0,     0,     0,     0,    30,
       31,     0,    32,     0,     0,     0,     0,     0,     0,     0,
        0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
-      36,    37,    38,     0,     0,    39,    40,    41,    42,     0,
-       0,    43,    44,     0,     0,     0,     0,    45,     0,     0,
-       0,    46,     2,     3,     4,     5,     0,     6,     7,     8,
-       9,    10,     0,    11,    12,    13,     0,    14,    15,    16,
-       0,    17,   324,    18,     0,     0,     0,    19,     0,    20,
-      21,    22,     0,     0,     0,     0,     0,     0,     0,    24,
-      25,    26,     0,     0,     0,    27,     0,     0,     0,     0,
-       0,    30,    31,     0,    32,     0,     0,     0,     0,     0,
-       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
-      34,    35,    36,    37,    38,     0,     0,    39,    40,     0,
-      42,     0,     0,    43,    44,     0,     0,     0,    66,    45,
-       0,     0,     0,    46,     2,     3,     4,     5,     0,     6,
-       7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
-      15,    16,     0,    17,     0,    18,     0,     0,     0,    19,
-       0,    20,    21,    22,     0,     0,     0,     0,     0,     0,
-       0,    24,    25,    26,     0,     0,     0,    27,     0,     0,
-       0,     0,     0,    30,    31,     0,    32,     0,     0,     0,
-       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
-       0,     0,    34,    35,    36,    37,    38,     0,     0,    39,
-      40,     0,    42,     0,     0,    43,    44,     0,     0,     0,
-      66,    45,     0,     0,     0,    46,     2,     3,     4,     5,
-       0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,    14,    15,    16,     0,    17,     0,    18,     0,     0,
-       0,    19,     0,    20,    21,    22,     0,     0,     0,     0,
-       0,     0,     0,    24,    25,    26,     0,     0,     0,    27,
-       0,     0,     0,     0,     0,    30,    31,     0,    32,     0,
-       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
-       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
-       0,    39,    40,     0,    42,     0,     0,    43,    44,     0,
-       0,     0,     0,    45,     0,     0,     0,    46,     2,     3,
-       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,    14,    15,    16,   208,    17,     0,    18,
-       0,     0,     0,    19,     0,    20,    21,   135,   136,     0,
-       0,   137,   138,   139,   140,    24,   141,    26,     0,   142,
-     143,   144,     0,     0,     0,     0,     0,    30,    31,     0,
-      32,     0,     0,     0,   145,   146,   147,   148,   149,    33,
-      66,     0,     0,   150,   151,     0,    34,    35,    36,    37,
-      38,     0,     0,     0,    40,     0,    42,     0,     0,    43,
-      44,     2,     3,     4,     5,    45,     0,     0,     0,    46,
-       0,     0,    11,    12,    13,     0,    14,    68,    16,     0,
-      17,     0,     0,     0,     0,     0,     0,    87,     0,     0,
-       0,     0,    88,     0,    89,    90,    91,    92,    69,     0,
-      26,     0,     2,     3,     4,     5,     0,     0,     0,     0,
-       0,     0,     0,    11,    12,    13,     0,    14,    68,    16,
-       0,    17,    33,     0,     0,     0,     0,     0,    87,    34,
-      35,    36,    37,    38,     0,    89,     0,    91,     0,    69,
-       0,    26,    43,    44,     0,     0,     0,     0,    45,     0,
-       0,     0,    46,   107,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
-      34,    35,    36,    37,    38,     2,     3,     4,     5,     0,
-       0,     0,     0,    43,    44,     0,    11,    12,    13,    45,
-      14,    68,    16,    46,    17,     0,     0,     0,     0,     0,
+      36,    37,    38,     0,     0,    39,    40,     0,    42,     0,
+      43,    44,     0,     0,     0,     0,    45,     0,     0,     0,
+      46,     2,     3,     4,     5,     0,     6,     7,     8,     9,
+      10,     0,    11,    12,    13,     0,    14,    15,    16,   242,
+      17,     0,    18,     0,     0,     0,    19,     0,    20,    21,
+     135,   136,     0,     0,   137,   138,   139,   140,    24,   141,
+      26,     0,   142,   143,   144,     0,     0,     0,     0,     0,
+      30,    31,     0,    32,     0,     0,   145,   146,   147,   148,
+     149,     0,    33,     0,     0,   150,   151,     0,     0,    34,
+      35,    36,    37,    38,     0,     0,     0,    40,     0,    42,
+       0,    43,    44,     2,     3,     4,     5,    45,     0,     0,
+       0,    46,     0,     0,    11,    12,    13,     0,    14,    68,
+      16,     0,    17,     0,     0,     0,     0,     0,     0,    87,
+       0,     0,     0,     0,    88,     0,    89,    90,    91,    92,
+      69,     0,    26,     2,     3,     4,     5,     0,     0,     0,
+       0,     0,     0,     0,    11,    12,    13,     0,    14,    68,
+      16,     0,    17,     0,    33,     0,     0,     0,     0,    87,
+       0,    34,    35,    36,    37,    38,    89,     0,    91,     0,
+      69,     0,    26,    43,    44,     0,     0,     0,     0,    45,
+       0,     0,     0,    46,   107,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
+       0,    34,    35,    36,    37,    38,     0,     0,     0,     2,
+       3,     4,     5,    43,    44,     0,     0,     0,     0,    45,
+      11,    12,    13,    46,    14,    68,    16,     0,    17,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    69,     0,    26,     2,
+       3,     4,     5,     0,     0,     0,     0,     0,     0,     0,
+      11,    12,    13,     0,    14,    68,    16,     0,    17,     0,
+      33,     0,     0,     0,     0,     0,     0,    34,    35,    36,
+      37,    38,     0,     0,     0,     0,    69,     0,    26,    43,
+      44,     0,     0,     0,     0,    45,     0,     0,     0,    46,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      33,     0,     0,     0,     0,     0,     0,    34,    35,    36,
+      37,    38,     0,     0,     0,     2,     3,     4,     5,    43,
+      44,     0,     0,     0,     0,    73,    11,    12,    13,    46,
+      14,    68,    16,     0,    17,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    69,     0,    26,     2,     3,     4,     5,     0,
        0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
       14,    68,    16,     0,    17,     0,    33,     0,     0,     0,
        0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
-       0,     0,    69,     0,    26,     0,    43,    44,     0,     0,
-       0,     0,    45,     0,     0,     0,    46,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
-       0,     0,     0,    34,    35,    36,    37,    38,     2,     3,
-       4,     5,     0,     0,     0,     0,    43,    44,     0,    11,
-      12,    13,    73,    14,    68,    16,    46,    17,     0,     0,
+       0,     0,    69,     0,    26,    43,    44,     0,     0,     0,
+       0,    78,     0,     0,     0,    46,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    33,     0,     0,   169,
+       0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
+       0,     0,     0,     0,     0,    43,    44,     0,     0,     0,
+       0,    81,   135,   136,     0,    46,   137,   138,   139,   140,
+       0,   141,   170,   171,   142,   143,   144,   184,     0,     0,
+       0,     0,     0,     0,   185,     0,     0,     0,   145,   146,
+     147,   148,   149,     0,     0,   135,   136,   150,   151,   137,
+     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
+     186,     0,     0,     0,     0,     0,     0,   187,     0,     0,
+       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
+     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
+     142,   143,   144,   188,     0,     0,     0,     0,     0,     0,
+     189,     0,     0,     0,   145,   146,   147,   148,   149,     0,
+       0,   135,   136,   150,   151,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,   190,     0,     0,     0,
+       0,     0,     0,   191,     0,     0,     0,   145,   146,   147,
+     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,   275,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    69,     0,    26,     2,     3,
-       4,     5,     0,     0,     0,     0,     0,     0,     0,    11,
-      12,    13,     0,    14,    68,    16,     0,    17,     0,    33,
-       0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
-      38,     0,     0,     0,     0,    69,     0,    26,     0,    43,
-      44,     0,     0,     0,     0,    78,     0,     0,     0,    46,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
-       0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
-      38,     0,     0,     0,   184,     0,     0,     0,     0,    43,
-      44,   185,     0,     0,     0,    81,     0,     0,     0,    46,
-       0,     0,   135,   136,     0,     0,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,   186,     0,
-       0,     0,     0,     0,     0,   187,     0,     0,     0,   145,
-     146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
-     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,   188,     0,     0,     0,     0,     0,     0,   189,
+     145,   146,   147,   148,   149,     0,     0,   135,   136,   150,
+     151,   137,   138,   139,   140,     0,   141,     0,     0,   142,
+     143,   144,   276,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
      135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
-       0,     0,   142,   143,   144,     0,   190,     0,     0,     0,
-       0,     0,     0,   191,     0,     0,     0,   145,   146,   147,
-     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
-     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
-     277,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
-     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,     0,   278,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
-       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,   279,     0,
+       0,     0,   142,   143,   144,   277,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   145,   146,   147,   148,
+     149,     0,     0,   135,   136,   150,   151,   137,   138,   139,
+     140,     0,   141,     0,     0,   142,   143,   144,   278,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,   145,
      146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
      137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,   280,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
-     135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
-       0,     0,   142,   143,   144,     0,     0,     0,     0,     0,
-       0,     0,     0,   242,     0,     0,     0,   145,   146,   147,
-     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
-     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   181,
-     243,   145,   146,   147,   148,   149,     0,     0,   135,   136,
+     144,     0,     0,     0,     0,     0,     0,     0,   208,     0,
+       0,     0,   145,   146,   147,   148,   149,     0,     0,   135,
+     136,   150,   151,   137,   138,   139,   140,     0,   141,     0,
+       0,   142,   143,   144,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   181,     0,   145,   146,   147,   148,   149,
+       0,    66,   135,   136,   150,   151,   137,   138,   139,   140,
+       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   145,   146,
+     147,   148,   149,     0,     0,   135,   136,   150,   151,   137,
+     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
+       0,     0,     0,     0,     0,   192,   193,     0,     0,     0,
+       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
      150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
      142,   143,   144,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
-       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
-       0,     0,   192,   193,     0,     0,     0,     0,     0,   145,
-     146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
-     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
-       0,   196,   150,   151,   135,   136,     0,     0,   137,   138,
-     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
+       0,     0,     0,     0,   145,   146,   147,   148,   149,     0,
+       0,     0,   196,   150,   151,   135,   136,     0,     0,   137,
+     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
      150,   151,   137,   138,     0,     0,     0,   141,     0,     0,
      142,   143,   144,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
-       0,     0,     0,     0,   150,   151
+       0,     0,     0,     0,   145,   146,   147,   148,   149,     0,
+       0,     0,     0,   150,   151
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    56,    55,     4,   132,     0,     7,     8,     9,    46,
-      31,    12,    13,    14,    15,    54,    54,    64,     1,    13,
-      21,    15,   304,    24,    32,    36,   100,   303,    34,    30,
-      31,   105,    33,    34,    35,    36,    37,    38,    74,    76,
-     316,    77,    43,    44,    45,    46,    83,    58,    54,    98,
-      58,    28,    91,    91,   336,    28,    57,    93,    94,    95,
-      96,    13,    14,    50,    47,   101,   102,   235,    69,    28,
-      77,    74,    73,    94,    77,    76,    28,    78,   246,    73,
-      81,    45,    83,    47,    78,    28,    87,   108,    89,    92,
-      93,    94,    95,    96,   101,   102,    28,   205,   101,   102,
-     101,   209,    98,    98,    74,    56,    57,    77,   100,   105,
-     100,   100,   100,   105,   317,   105,   105,   105,    28,   322,
-      28,   168,   104,   105,    28,    95,    96,    28,   128,   130,
-     131,   101,   102,   180,   135,   136,   137,   138,   139,   140,
+       0,    56,    55,     4,     0,   132,     7,     8,     9,    46,
+      31,    12,    13,    14,    15,   302,    97,    64,     1,    13,
+      21,    15,    99,    24,    32,    13,    14,   104,    74,    30,
+      31,    77,    33,    34,    35,    36,    37,    38,    77,    76,
+      28,    36,    43,    44,    45,    46,    83,   334,    94,    95,
+      58,    54,    54,    97,   100,   101,    57,   301,    34,   235,
+     104,   100,   101,    58,    47,    28,    69,    69,    69,   245,
+     314,    99,    73,    94,    28,    76,   104,    78,    54,    73,
+      81,    45,    83,    47,    78,    99,    87,   108,    89,    74,
+     104,    50,    77,    74,    56,    57,    77,   315,    28,   205,
+     101,    97,   320,   209,    52,    53,    91,    92,    93,    94,
+      95,    92,    93,    94,    95,   100,   101,    99,    28,   100,
+     101,   168,   104,   103,   104,    28,    99,    28,   128,   130,
+     131,   104,    28,   180,   135,   136,   137,   138,   139,   140,
      141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   134,   153,    52,    53,    99,   157,    27,    28,   206,
-     291,   292,    91,    99,   105,   166,   105,    45,    28,   170,
-     171,    52,   173,   174,   105,   176,   177,   105,    28,    28,
-     181,   105,   290,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,    28,   302,    28,    28,   198,    32,    42,
-     308,   309,   201,   311,   203,    28,   334,   208,   105,   337,
-      54,    32,    28,   268,    36,    28,    58,    32,    32,   327,
-     105,    32,    65,    66,   261,    28,    69,    70,    71,    72,
-      32,    74,    75,    76,    77,    78,    79,   334,   285,   128,
-     304,   242,   243,   316,   169,   228,   354,   355,    31,    92,
-      93,    94,    95,    96,    -1,   302,    -1,   312,   101,   102,
-     261,    -1,    -1,    -1,    -1,    -1,    -1,   320,   267,    -1,
-     323,   270,    -1,    -1,   321,    -1,   277,   278,   279,   280,
-     335,    -1,    -1,   284,    -1,    -1,    -1,   286,    -1,    -1,
-     273,    -1,    -1,   276,    -1,    -1,    -1,   298,   345,   346,
-     299,   348,   357,   350,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   310,    -1,    -1,   313,    -1,    -1,   316,    -1,    -1,
-      -1,    -1,    -1,   322,    -1,    -1,    -1,    -1,    -1,   328,
-     329,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   340,    -1,    -1,    -1,    -1,    -1,    -1,   347,    -1,
-     349,    -1,    -1,    -1,    -1,   355,     0,     1,    -1,   359,
-      -1,    -1,    -1,   362,   363,   364,    -1,    -1,    12,    13,
+     151,   134,   153,    27,    28,    28,   157,   289,   290,   206,
+      28,    98,    69,    98,   104,   166,   104,    45,    28,   170,
+     171,    52,   173,   174,    28,   176,   177,   104,   104,    28,
+     181,   104,   288,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,    28,   300,    28,    28,   198,    32,    28,
+     306,   307,   201,   309,   203,   332,   104,   208,   335,    54,
+      32,    28,   267,    36,    28,    58,    32,    32,   104,   325,
+      32,    28,    32,   260,   332,   314,   128,   302,   169,    31,
+      -1,    -1,    -1,    -1,    -1,    -1,   283,    -1,    -1,    -1,
+      -1,   242,    -1,    -1,    -1,   228,   352,   353,    -1,    -1,
+      -1,    -1,    -1,   300,    -1,   310,    -1,    -1,    -1,   260,
+      -1,    -1,    -1,    -1,    -1,   318,    -1,   266,   321,    -1,
+     269,    -1,   319,    -1,   275,   276,   277,   278,   333,    -1,
+      -1,   282,    -1,    -1,    -1,   284,    -1,    -1,    -1,   272,
+      -1,   274,    -1,    -1,    -1,   296,   343,   344,   297,   346,
+     355,   348,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   308,
+      -1,    -1,   311,    -1,    -1,   314,    -1,    -1,    -1,    -1,
+      -1,   320,    -1,    -1,    -1,    -1,    -1,   326,   327,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   338,
+      -1,    -1,    -1,    -1,    -1,    -1,   345,    -1,   347,    -1,
+      -1,    -1,    -1,   353,     0,     1,    -1,   357,    -1,    -1,
+      -1,   360,   361,   362,    -1,    -1,    12,    13,    14,    15,
+      -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
+      -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
+      -1,    37,    -1,    39,    40,    41,    -1,    -1,    44,    -1,
+      -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
+      -1,    -1,    -1,    59,    60,    61,    62,    -1,    64,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
+      -1,    87,    88,    89,    90,    -1,    92,    93,    -1,    -1,
+      -1,    97,    98,    -1,    -1,    -1,   102,    12,    13,    14,
+      15,    -1,    17,    18,    19,    20,    21,    -1,    23,    24,
+      25,    -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,
+      -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,    44,
+      -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,
+      55,    -1,    -1,    -1,    59,    60,    61,    62,    -1,    64,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
+      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
+      -1,    -1,    87,    88,    89,    90,    -1,    92,    93,    -1,
+      -1,    -1,    -1,    98,    -1,    -1,    -1,   102,    12,    13,
       14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
-      24,    25,    -1,    27,    28,    29,    -1,    31,    -1,    33,
+      24,    25,    -1,    27,    28,    29,    -1,    31,    32,    33,
       -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,
-      44,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
-      -1,    55,    -1,    -1,    -1,    59,    60,    61,    62,    -1,
+      -1,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
+      -1,    55,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
       64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
       -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
-      84,    -1,    -1,    87,    88,    89,    90,    -1,    -1,    93,
-      94,    -1,    -1,    -1,    98,    99,    -1,    -1,    -1,   103,
+      84,    -1,    -1,    87,    88,    -1,    90,    -1,    92,    93,
+      -1,    -1,    -1,    97,    98,    -1,    -1,    -1,   102,    12,
+      13,    14,    15,    -1,    17,    18,    19,    20,    21,    -1,
+      23,    24,    25,    -1,    27,    28,    29,    -1,    31,    -1,
+      33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,
+      -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    61,    62,
+      -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
+      83,    84,    -1,    -1,    87,    88,    -1,    90,    -1,    92,
+      93,    -1,    -1,    -1,    97,    98,    -1,    -1,    -1,   102,
       12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
       -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
       -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,
-      -1,    -1,    44,    -1,    -1,    -1,    -1,    49,    50,    51,
-      -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,
+      -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    61,
       62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      82,    83,    84,    -1,    -1,    87,    88,    89,    90,    -1,
-      -1,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,
-      -1,   103,    12,    13,    14,    15,    -1,    17,    18,    19,
-      20,    21,    -1,    23,    24,    25,    -1,    27,    28,    29,
-      -1,    31,    32,    33,    -1,    -1,    -1,    37,    -1,    39,
-      40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
-      50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,
-      -1,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    -1,
-      90,    -1,    -1,    93,    94,    -1,    -1,    -1,    98,    99,
-      -1,    -1,    -1,   103,    12,    13,    14,    15,    -1,    17,
-      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
-      28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,
-      -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,
-      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    87,
-      88,    -1,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
-      98,    99,    -1,    -1,    -1,   103,    12,    13,    14,    15,
-      -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
-      -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
-      -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
-      -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
-      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
-      -1,    87,    88,    -1,    90,    -1,    -1,    93,    94,    -1,
-      -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    12,    13,
-      14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
-      24,    25,    -1,    27,    28,    29,    54,    31,    -1,    33,
-      -1,    -1,    -1,    37,    -1,    39,    40,    65,    66,    -1,
-      -1,    69,    70,    71,    72,    49,    74,    51,    -1,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
-      64,    -1,    -1,    -1,    92,    93,    94,    95,    96,    73,
-      98,    -1,    -1,   101,   102,    -1,    80,    81,    82,    83,
-      84,    -1,    -1,    -1,    88,    -1,    90,    -1,    -1,    93,
-      94,    12,    13,    14,    15,    99,    -1,    -1,    -1,   103,
-      -1,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
-      31,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,
-      -1,    -1,    43,    -1,    45,    46,    47,    48,    49,    -1,
-      51,    -1,    12,    13,    14,    15,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    23,    24,    25,    -1,    27,    28,    29,
-      -1,    31,    73,    -1,    -1,    -1,    -1,    -1,    38,    80,
-      81,    82,    83,    84,    -1,    45,    -1,    47,    -1,    49,
-      -1,    51,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,
-      -1,    -1,   103,    63,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      80,    81,    82,    83,    84,    12,    13,    14,    15,    -1,
-      -1,    -1,    -1,    93,    94,    -1,    23,    24,    25,    99,
-      27,    28,    29,   103,    31,    -1,    -1,    -1,    -1,    -1,
+      82,    83,    84,    -1,    -1,    87,    88,    -1,    90,    -1,
+      92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,
+     102,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
+      21,    -1,    23,    24,    25,    -1,    27,    28,    29,    54,
+      31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,
+      65,    66,    -1,    -1,    69,    70,    71,    72,    49,    74,
+      51,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
+      61,    62,    -1,    64,    -1,    -1,    91,    92,    93,    94,
+      95,    -1,    73,    -1,    -1,   100,   101,    -1,    -1,    80,
+      81,    82,    83,    84,    -1,    -1,    -1,    88,    -1,    90,
+      -1,    92,    93,    12,    13,    14,    15,    98,    -1,    -1,
+      -1,   102,    -1,    -1,    23,    24,    25,    -1,    27,    28,
+      29,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,    38,
+      -1,    -1,    -1,    -1,    43,    -1,    45,    46,    47,    48,
+      49,    -1,    51,    12,    13,    14,    15,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    23,    24,    25,    -1,    27,    28,
+      29,    -1,    31,    -1,    73,    -1,    -1,    -1,    -1,    38,
+      -1,    80,    81,    82,    83,    84,    45,    -1,    47,    -1,
+      49,    -1,    51,    92,    93,    -1,    -1,    -1,    -1,    98,
+      -1,    -1,    -1,   102,    63,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,
+      -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,    12,
+      13,    14,    15,    92,    93,    -1,    -1,    -1,    -1,    98,
+      23,    24,    25,   102,    27,    28,    29,    -1,    31,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,    51,    12,
+      13,    14,    15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      23,    24,    25,    -1,    27,    28,    29,    -1,    31,    -1,
+      73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
+      83,    84,    -1,    -1,    -1,    -1,    49,    -1,    51,    92,
+      93,    -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,   102,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
+      83,    84,    -1,    -1,    -1,    12,    13,    14,    15,    92,
+      93,    -1,    -1,    -1,    -1,    98,    23,    24,    25,   102,
+      27,    28,    29,    -1,    31,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    49,    -1,    51,    12,    13,    14,    15,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    23,    24,    25,    -1,
       27,    28,    29,    -1,    31,    -1,    73,    -1,    -1,    -1,
       -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,
-      -1,    -1,    49,    -1,    51,    -1,    93,    94,    -1,    -1,
-      -1,    -1,    99,    -1,    -1,    -1,   103,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,
-      -1,    -1,    -1,    80,    81,    82,    83,    84,    12,    13,
-      14,    15,    -1,    -1,    -1,    -1,    93,    94,    -1,    23,
-      24,    25,    99,    27,    28,    29,   103,    31,    -1,    -1,
+      -1,    -1,    49,    -1,    51,    92,    93,    -1,    -1,    -1,
+      -1,    98,    -1,    -1,    -1,   102,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    42,
+      -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
+      -1,    98,    65,    66,    -1,   102,    69,    70,    71,    72,
+      -1,    74,    75,    76,    77,    78,    79,    47,    -1,    -1,
+      -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    91,    92,
+      93,    94,    95,    -1,    -1,    65,    66,   100,   101,    69,
+      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
+      47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,
+      -1,    91,    92,    93,    94,    95,    -1,    -1,    65,    66,
+     100,   101,    69,    70,    71,    72,    -1,    74,    -1,    -1,
+      77,    78,    79,    47,    -1,    -1,    -1,    -1,    -1,    -1,
+      54,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
+      -1,    65,    66,   100,   101,    69,    70,    71,    72,    -1,
+      74,    -1,    -1,    77,    78,    79,    47,    -1,    -1,    -1,
+      -1,    -1,    -1,    54,    -1,    -1,    -1,    91,    92,    93,
+      94,    95,    -1,    -1,    65,    66,   100,   101,    69,    70,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    47,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    49,    -1,    51,    12,    13,
-      14,    15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,
-      24,    25,    -1,    27,    28,    29,    -1,    31,    -1,    73,
-      -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
-      84,    -1,    -1,    -1,    -1,    49,    -1,    51,    -1,    93,
-      94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
-      -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
-      84,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    93,
-      94,    54,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,
-      -1,    -1,    65,    66,    -1,    -1,    69,    70,    71,    72,
-      -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
-      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,
-      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
-      65,    66,   101,   102,    69,    70,    71,    72,    -1,    74,
-      -1,    -1,    77,    78,    79,    -1,    47,    -1,    -1,    -1,
-      -1,    -1,    -1,    54,    -1,    -1,    -1,    92,    93,    94,
-      95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
-      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
-      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
-     101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
-      77,    78,    79,    -1,    47,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-      -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
-      -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
+      91,    92,    93,    94,    95,    -1,    -1,    65,    66,   100,
+     101,    69,    70,    71,    72,    -1,    74,    -1,    -1,    77,
+      78,    79,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,    -1,
+      65,    66,   100,   101,    69,    70,    71,    72,    -1,    74,
+      -1,    -1,    77,    78,    79,    47,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
+      95,    -1,    -1,    65,    66,   100,   101,    69,    70,    71,
+      72,    -1,    74,    -1,    -1,    77,    78,    79,    47,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,
+      92,    93,    94,    95,    -1,    -1,    65,    66,   100,   101,
       69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
-      65,    66,   101,   102,    69,    70,    71,    72,    -1,    74,
-      -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    54,    -1,    -1,    -1,    92,    93,    94,
-      95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
-      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,
-      91,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
-     101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
-      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-      -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,
+      -1,    -1,    91,    92,    93,    94,    95,    -1,    -1,    65,
+      66,   100,   101,    69,    70,    71,    72,    -1,    74,    -1,
+      -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    56,    -1,    91,    92,    93,    94,    95,
+      -1,    97,    65,    66,   100,   101,    69,    70,    71,    72,
       -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
-      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
-      -1,   100,   101,   102,    65,    66,    -1,    -1,    69,    70,
-      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
+      93,    94,    95,    -1,    -1,    65,    66,   100,   101,    69,
+      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
+      -1,    -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    -1,
+      -1,    91,    92,    93,    94,    95,    -1,    -1,    65,    66,
+     100,   101,    69,    70,    71,    72,    -1,    74,    -1,    -1,
+      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
+      -1,    -1,    99,   100,   101,    65,    66,    -1,    -1,    69,
+      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
-     101,   102,    69,    70,    -1,    -1,    -1,    74,    -1,    -1,
+      -1,    91,    92,    93,    94,    95,    -1,    -1,    65,    66,
+     100,   101,    69,    70,    -1,    -1,    -1,    74,    -1,    -1,
       77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-      -1,    -1,    -1,    -1,   101,   102
+      -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
+      -1,    -1,    -1,   100,   101
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1296,39 +1298,39 @@ static const yytype_uint8 yystos[] =
       21,    23,    24,    25,    27,    28,    29,    31,    33,    37,
       39,    40,    41,    44,    49,    50,    51,    55,    59,    60,
       61,    62,    64,    73,    80,    81,    82,    83,    84,    87,
-      88,    89,    90,    93,    94,    99,   103,   107,   113,   114,
-     115,   116,   117,   125,   126,   127,   132,   133,   134,   135,
-     136,   140,   143,   145,   148,   152,    98,   108,    28,    49,
-     134,   134,   134,    99,   134,   154,    28,   134,    99,   154,
-     134,    99,   154,   144,    50,    28,   137,    38,    43,    45,
-      46,    47,    48,   134,   141,   142,    28,   134,    56,    57,
-      13,    14,    28,    28,    28,    28,   134,    63,   141,   142,
-      28,   139,   134,   134,   134,   134,   134,   134,    28,   138,
-      28,    99,   134,   134,   134,   134,   153,     0,   108,   123,
-     124,    91,   123,   115,   134,    65,    66,    69,    70,    71,
-      72,    74,    77,    78,    79,    92,    93,    94,    95,    96,
-     101,   102,   129,    99,   134,   134,   154,   105,   153,   154,
-     134,   153,   153,   105,   134,   134,    45,   142,   146,    42,
-      75,    76,    28,    54,    91,   134,    54,    91,    52,   112,
-     147,    56,   142,   105,    47,    54,    47,    54,    47,    54,
-      47,    54,    85,    86,   105,    28,   100,   104,   105,   113,
-     129,   131,   134,   134,    53,   109,   112,   130,    54,   108,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,    28,   149,   100,
-     134,   100,   100,    28,   134,   129,    28,   135,   134,   134,
-     134,   134,    54,    91,   134,   134,   129,   134,    28,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,    28,
-     100,   105,   134,   108,   116,   130,   130,   131,   129,   134,
-     131,   105,   108,   149,   134,   134,   149,    47,    47,    47,
-      47,   153,    32,    34,    54,   130,   115,   130,    28,   105,
-     151,   108,   108,   134,   134,   134,   134,   100,    54,   134,
-      32,    58,   110,   129,   130,    32,    28,   131,   151,   151,
-     134,   130,   129,   131,    36,   111,   119,   120,   121,   122,
-     128,   110,   120,   128,    32,   131,   131,   130,   131,   115,
-     130,   122,   130,   121,   123,   129,   130,   123,    28,   150,
-     131,   130,   130,    32,    32,   109,   112,   115,   110,   118,
-     112,   105,   130,    32,   129,   129,   130,   129,   130,   129,
-      28,    32,   131,   116,   131,   115,   130,   130,   130
+      88,    89,    90,    92,    93,    98,   102,   106,   112,   113,
+     114,   115,   116,   124,   125,   126,   131,   132,   133,   134,
+     135,   139,   142,   144,   147,   151,    97,   107,    28,    49,
+     133,   133,   133,    98,   133,   153,    28,   133,    98,   153,
+     133,    98,   153,   143,    50,    28,   136,    38,    43,    45,
+      46,    47,    48,   133,   140,   141,    28,   133,    56,    57,
+      13,    14,    28,    28,    28,    28,   133,    63,   140,   141,
+      28,   138,   133,   133,   133,   133,   133,   133,    28,   137,
+      28,    98,   133,   133,   133,   133,   152,     0,   107,   122,
+     123,    69,   122,   114,   133,    65,    66,    69,    70,    71,
+      72,    74,    77,    78,    79,    91,    92,    93,    94,    95,
+     100,   101,   128,    98,   133,   133,   153,   104,   152,   153,
+     133,   152,   152,   104,   133,   133,    45,   141,   145,    42,
+      75,    76,    28,    54,    69,   133,    54,    69,    52,   111,
+     146,    56,   141,   104,    47,    54,    47,    54,    47,    54,
+      47,    54,    85,    86,   104,    28,    99,   103,   104,   112,
+     128,   130,   133,   133,    53,   108,   111,   129,    54,   107,
+     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   133,   133,   133,   133,    28,   148,    99,
+     133,    99,    99,    28,   133,   128,    28,   134,   133,   133,
+     133,   133,    54,   133,   133,   128,   133,    28,   133,   133,
+     133,   133,   133,   133,   133,   133,   133,   133,    28,    99,
+     104,   133,   107,   115,   129,   129,   130,   128,   133,   130,
+     104,   107,   148,   133,   148,    47,    47,    47,    47,   152,
+      32,    34,    54,   129,   114,   129,    28,   104,   150,   107,
+     107,   133,   133,   133,   133,    99,    54,   133,    32,    58,
+     109,   128,   129,    32,    28,   130,   150,   150,   133,   129,
+     128,   130,    36,   110,   118,   119,   120,   121,   127,   109,
+     119,   127,    32,   130,   130,   129,   130,   114,   129,   121,
+     129,   120,   122,   128,   129,   122,    28,   149,   130,   129,
+     129,    32,    32,   108,   111,   114,   109,   117,   111,   104,
+     129,    32,   128,   128,   129,   128,   129,   128,    28,    32,
+     130,   115,   130,   114,   129,   129,   129
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2143,12 +2145,12 @@ yyreduce:
   switch (yyn)
     {
         case 4:
-#line 123 "engines/director/lingo/lingo-gr.y"
+#line 122 "engines/director/lingo/lingo-gr.y"
     { yyerrok; ;}
     break;
 
   case 5:
-#line 126 "engines/director/lingo/lingo-gr.y"
+#line 125 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 1;
@@ -2157,7 +2159,7 @@ yyreduce:
     break;
 
   case 6:
-#line 133 "engines/director/lingo/lingo-gr.y"
+#line 132 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 1;
@@ -2166,7 +2168,7 @@ yyreduce:
     break;
 
   case 7:
-#line 140 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 5;
@@ -2175,7 +2177,7 @@ yyreduce:
     break;
 
   case 8:
-#line 147 "engines/director/lingo/lingo-gr.y"
+#line 146 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 8;
@@ -2184,12 +2186,12 @@ yyreduce:
     break;
 
   case 9:
-#line 154 "engines/director/lingo/lingo-gr.y"
+#line 153 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_inCond = false; ;}
     break;
 
   case 13:
-#line 162 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str());
@@ -2199,24 +2201,24 @@ yyreduce:
     break;
 
   case 14:
-#line 168 "engines/director/lingo/lingo-gr.y"
+#line 167 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_assign);
 			(yyval.code) = (yyvsp[(2) - (4)].code); ;}
     break;
 
   case 15:
-#line 171 "engines/director/lingo/lingo-gr.y"
+#line 170 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_after); ;}
     break;
 
   case 16:
-#line 172 "engines/director/lingo/lingo-gr.y"
+#line 171 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_before); ;}
     break;
 
   case 17:
-#line 173 "engines/director/lingo/lingo-gr.y"
+#line 172 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2226,7 +2228,7 @@ yyreduce:
     break;
 
   case 18:
-#line 179 "engines/director/lingo/lingo-gr.y"
+#line 178 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2237,17 +2239,7 @@ yyreduce:
     break;
 
   case 19:
-#line 186 "engines/director/lingo/lingo-gr.y"
-    {
-		g_lingo->code1(g_lingo->c_swap);
-		g_lingo->code1(g_lingo->c_theentityassign);
-		g_lingo->codeInt((yyvsp[(2) - (5)].e)[0]);
-		g_lingo->codeInt((yyvsp[(2) - (5)].e)[1]);
-		(yyval.code) = (yyvsp[(5) - (5)].code); ;}
-    break;
-
-  case 20:
-#line 192 "engines/director/lingo/lingo-gr.y"
+#line 185 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2256,8 +2248,8 @@ yyreduce:
 		delete (yyvsp[(2) - (4)].s); ;}
     break;
 
-  case 21:
-#line 198 "engines/director/lingo/lingo-gr.y"
+  case 20:
+#line 191 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2267,8 +2259,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(4) - (4)].code); ;}
     break;
 
-  case 22:
-#line 205 "engines/director/lingo/lingo-gr.y"
+  case 21:
+#line 198 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2277,8 +2269,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(5) - (5)].code); ;}
     break;
 
-  case 28:
-#line 224 "engines/director/lingo/lingo-gr.y"
+  case 27:
+#line 217 "engines/director/lingo/lingo-gr.y"
     {
 		inst body = 0, end = 0;
 		WRITE_UINT32(&body, (yyvsp[(3) - (5)].code) - (yyvsp[(1) - (5)].code));
@@ -2289,8 +2281,8 @@ yyreduce:
 		checkEnd((yyvsp[(5) - (5)].s), "repeat", true); ;}
     break;
 
-  case 29:
-#line 237 "engines/director/lingo/lingo-gr.y"
+  case 28:
+#line 230 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2307,8 +2299,8 @@ yyreduce:
 		checkEnd((yyvsp[(10) - (10)].s), "repeat", true); ;}
     break;
 
-  case 30:
-#line 255 "engines/director/lingo/lingo-gr.y"
+  case 29:
+#line 248 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (11)].code) - (yyvsp[(1) - (11)].code));
@@ -2325,8 +2317,8 @@ yyreduce:
 		checkEnd((yyvsp[(11) - (11)].s), "repeat", true); ;}
     break;
 
-  case 31:
-#line 269 "engines/director/lingo/lingo-gr.y"
+  case 30:
+#line 262 "engines/director/lingo/lingo-gr.y"
     {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[(3) - (3)].code) - (yyvsp[(1) - (3)].code));
@@ -2334,22 +2326,22 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[(1) - (3)].code) + 1] = end; ;}
     break;
 
-  case 32:
-#line 274 "engines/director/lingo/lingo-gr.y"
+  case 31:
+#line 267 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 			checkEnd((yyvsp[(6) - (6)].s), "tell", true); ;}
     break;
 
-  case 33:
-#line 277 "engines/director/lingo/lingo-gr.y"
+  case 32:
+#line 270 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 		;}
     break;
 
-  case 34:
-#line 282 "engines/director/lingo/lingo-gr.y"
+  case 33:
+#line 275 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2362,8 +2354,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 35:
-#line 292 "engines/director/lingo/lingo-gr.y"
+  case 34:
+#line 285 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2378,8 +2370,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 36:
-#line 304 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 297 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2394,8 +2386,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(8) - (9)].code) - (yyvsp[(1) - (9)].code)); ;}
     break;
 
-  case 37:
-#line 316 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 309 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2408,8 +2400,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(9) - (9)].code) - (yyvsp[(1) - (9)].code)); ;}
     break;
 
-  case 38:
-#line 326 "engines/director/lingo/lingo-gr.y"
+  case 37:
+#line 319 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2422,8 +2414,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(10) - (10)].code) - (yyvsp[(1) - (10)].code)); ;}
     break;
 
-  case 39:
-#line 336 "engines/director/lingo/lingo-gr.y"
+  case 38:
+#line 329 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2436,8 +2428,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 40:
-#line 346 "engines/director/lingo/lingo-gr.y"
+  case 39:
+#line 339 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2450,18 +2442,18 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 41:
-#line 358 "engines/director/lingo/lingo-gr.y"
+  case 40:
+#line 351 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = 0; ;}
     break;
 
-  case 42:
-#line 359 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 352 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 47:
-#line 370 "engines/director/lingo/lingo-gr.y"
+  case 46:
+#line 363 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2470,8 +2462,8 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 49:
-#line 379 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 372 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2480,8 +2472,8 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 50:
-#line 385 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 378 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2490,23 +2482,23 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 51:
-#line 393 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 386 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); ;}
     break;
 
-  case 52:
-#line 396 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 389 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_inCond = true; ;}
     break;
 
-  case 53:
-#line 399 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 392 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
-  case 54:
-#line 402 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 395 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2514,8 +2506,8 @@ yyreduce:
 		delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 55:
-#line 409 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 402 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2523,8 +2515,8 @@ yyreduce:
 		g_lingo->codeLabel(0); ;}
     break;
 
-  case 56:
-#line 416 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 409 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2533,23 +2525,23 @@ yyreduce:
 		g_lingo->code1(skipEnd); ;}
     break;
 
-  case 57:
-#line 424 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 417 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 58:
-#line 427 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 420 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 59:
-#line 430 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 423 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 62:
-#line 435 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 428 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
@@ -2557,82 +2549,82 @@ yyreduce:
 		delete (yyvsp[(2) - (3)].s); ;}
     break;
 
-  case 63:
-#line 441 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 434 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_tellcode);
 		g_lingo->code1(STOP); ;}
     break;
 
-  case 64:
-#line 445 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 438 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt((yyvsp[(1) - (1)].i)); ;}
     break;
 
-  case 65:
-#line 448 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 441 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_floatpush);
 		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
-  case 66:
-#line 451 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 444 "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 67:
-#line 454 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 447 "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 69:
-#line 458 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 451 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 70:
-#line 461 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 454 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 71:
-#line 464 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 457 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 72:
-#line 465 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 458 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
-  case 73:
-#line 466 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 459 "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 74:
-#line 469 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 462 "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 75:
-#line 473 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 466 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2643,8 +2635,8 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 76:
-#line 481 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 474 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
@@ -2653,395 +2645,395 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 78:
-#line 488 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 481 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_add); ;}
     break;
 
-  case 79:
-#line 489 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 482 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_sub); ;}
     break;
 
-  case 80:
-#line 490 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 483 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
-  case 81:
-#line 491 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 484 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
-  case 82:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 485 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
-  case 83:
-#line 493 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 486 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
-  case 84:
-#line 494 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 487 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
-  case 85:
-#line 495 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 488 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_eq); ;}
     break;
 
-  case 86:
-#line 496 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 489 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
-  case 87:
-#line 497 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 490 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
-  case 88:
-#line 498 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 491 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
-  case 89:
-#line 499 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 492 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
-  case 90:
-#line 500 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 493 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
-  case 91:
-#line 501 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 494 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
-  case 92:
-#line 502 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 495 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
-  case 93:
-#line 503 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 496 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
-  case 94:
-#line 504 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 497 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
-  case 95:
-#line 505 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 498 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
-  case 96:
-#line 506 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 499 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
-  case 97:
-#line 507 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 500 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
-  case 98:
-#line 508 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 501 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 99:
-#line 509 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 502 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_arraypush); g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
-  case 100:
-#line 510 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 503 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
-  case 101:
-#line 511 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 504 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
-  case 102:
-#line 512 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 505 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
-  case 103:
-#line 513 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 506 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
-  case 104:
-#line 514 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 507 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
-  case 105:
-#line 515 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 508 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
-  case 106:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 509 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
-  case 107:
-#line 517 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 510 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
-  case 108:
-#line 518 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 511 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
-  case 109:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 512 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
-  case 110:
-#line 522 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 515 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 111:
-#line 527 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 520 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
-  case 114:
-#line 530 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 523 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
-  case 115:
-#line 531 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 524 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
-  case 119:
-#line 535 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 528 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 120:
-#line 538 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 531 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 121:
-#line 541 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 534 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 122:
-#line 544 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 537 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_voidpush);
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 1);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 123:
-#line 548 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 541 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 124:
-#line 549 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 542 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
-  case 125:
-#line 550 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 543 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
-  case 126:
-#line 551 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 544 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
-  case 127:
-#line 552 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 545 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
-  case 128:
-#line 553 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 546 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
-  case 129:
-#line 554 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 547 "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 130:
-#line 557 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 550 "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 131:
-#line 558 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 551 "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 132:
-#line 561 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 554 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 133:
-#line 562 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 555 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 134:
-#line 565 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 558 "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 135:
-#line 566 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 559 "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 136:
-#line 577 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 570 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
-  case 137:
-#line 578 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 571 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
-  case 138:
-#line 579 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 572 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
-  case 139:
-#line 580 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 573 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 140:
-#line 584 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 577 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 141:
-#line 588 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 581 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 146:
-#line 602 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 595 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
-  case 147:
-#line 603 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 596 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 148:
-#line 607 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 600 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 149:
-#line 611 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 604 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 150:
-#line 615 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 608 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
-  case 151:
-#line 615 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 608 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 152:
-#line 645 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 638 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 153:
-#line 646 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 639 "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));
 			g_lingo->_indef = false; ;}
     break;
 
-  case 154:
-#line 650 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 643 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFactory(*(yyvsp[(2) - (2)].s)); ;}
     break;
 
-  case 155:
-#line 651 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 644 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
-  case 156:
-#line 652 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 645 "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 157:
-#line 656 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 649 "engines/director/lingo/lingo-gr.y"
     {	// D3
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*(yyvsp[(1) - (8)].s), (yyvsp[(2) - (8)].code), (yyvsp[(3) - (8)].narg));
@@ -3051,8 +3043,8 @@ yyreduce:
 		checkEnd((yyvsp[(7) - (8)].s), (yyvsp[(1) - (8)].s)->c_str(), false); ;}
     break;
 
-  case 158:
-#line 663 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 656 "engines/director/lingo/lingo-gr.y"
     {	// D4. No 'end' clause
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*(yyvsp[(1) - (6)].s), (yyvsp[(2) - (6)].code), (yyvsp[(3) - (6)].narg));
@@ -3060,38 +3052,38 @@ yyreduce:
 		g_lingo->_ignoreMe = false; ;}
     break;
 
-  case 159:
-#line 669 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 662 "engines/director/lingo/lingo-gr.y"
     { (yyval.s) = (yyvsp[(2) - (2)].s); g_lingo->_indef = true; g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; ;}
     break;
 
-  case 160:
-#line 671 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 664 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 161:
-#line 672 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 665 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
-  case 162:
-#line 673 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 666 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 163:
-#line 674 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 667 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 167:
-#line 682 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 675 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
-  case 168:
-#line 686 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 679 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -3100,34 +3092,34 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 169:
-#line 694 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 687 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 170:
-#line 695 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 688 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 171:
-#line 696 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 689 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 172:
-#line 699 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 692 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 173:
-#line 700 "engines/director/lingo/lingo-gr.y"
+  case 172:
+#line 693 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3131 "engines/director/lingo/lingo-gr.cpp"
+#line 3123 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3341,6 +3333,6 @@ yyreturn:
 }
 
 
-#line 703 "engines/director/lingo/lingo-gr.y"
+#line 696 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index fe4030e..892a24c 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -108,7 +108,6 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %type<narg> argdef arglist nonemptyarglist
 %type<s> on
 
-%right '='
 %left tAND tOR
 %left tLT tLE tGT tGE tNEQ tCONTAINS tSTARTS tEQ
 %left '&'
@@ -170,25 +169,19 @@ asgn: tPUT expr tINTO ID 		{
 			$$ = $2; }
 	| tPUT expr tAFTER expr 		{ $$ = g_lingo->code1(g_lingo->c_after); }		// D3
 	| tPUT expr tBEFORE expr 		{ $$ = g_lingo->code1(g_lingo->c_before); }		// D3
-	| tSET ID '=' expr			{
+	| tSET ID tEQ expr			{
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString($2->c_str());
 		g_lingo->code1(g_lingo->c_assign);
 		$$ = $4;
 		delete $2; }
-	| tSET THEENTITY '=' expr	{
+	| tSET THEENTITY tEQ expr	{
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentityassign);
 		g_lingo->codeInt($2[0]);
 		g_lingo->codeInt($2[1]);
 		$$ = $4; }
-	| tSET THEENTITYWITHID expr '=' expr	{
-		g_lingo->code1(g_lingo->c_swap);
-		g_lingo->code1(g_lingo->c_theentityassign);
-		g_lingo->codeInt($2[0]);
-		g_lingo->codeInt($2[1]);
-		$$ = $5; }
 	| tSET ID tTO expr			{
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString($2->c_str());
@@ -234,7 +227,7 @@ stmt: stmtoneliner
 	//   statements
 	// end repeat
 	//
-	| repeatwith '=' expr end tTO expr end stmtlist end ENDCLAUSE {
+	| repeatwith tEQ expr end tTO expr end stmtlist end ENDCLAUSE {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, $3 - $1);
 		WRITE_UINT32(&finish, $6 - $1);
@@ -252,7 +245,7 @@ stmt: stmtoneliner
 	//   statements
 	// end repeat
 	//
-	| repeatwith '=' expr end tDOWN tTO expr end stmtlist end ENDCLAUSE {
+	| repeatwith tEQ expr end tDOWN tTO expr end stmtlist end ENDCLAUSE {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, $3 - $1);
 		WRITE_UINT32(&finish, $7 - $1);
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index e7c683e..c35eafe 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -1513,7 +1513,7 @@ YY_RULE_SETUP
 case 68:
 YY_RULE_SETUP
 #line 267 "engines/director/lingo/lingo-lex.l"
-{ count(); return g_lingo->_inCond ? tEQ : '='; }
+{ count(); return tEQ; }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index c133b86..d01849d 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -253,18 +253,18 @@ whitespace [\t ]
 (?i:then)				{ count(); return tTHEN; }
 (?i:then[\n\r]+)		{ count(); return tTHENNL; }
 (?i:to)					{ count(); return tTO; }
-(?i:sprite)			{ count(); return tSPRITE; }
+(?i:sprite)				{ count(); return tSPRITE; }
 (?i:with)				{ count(); return tWITH; }
-(?i:within)			{ count(); return tWITHIN; }
+(?i:within)				{ count(); return tWITHIN; }
 (?i:when)				{ count(); return tWHEN; }
-(?i:while)			{ count(); return tWHILE; }
+(?i:while)				{ count(); return tWHILE; }
 (?i:word)				{ count(); return tWORD; }
 
 [<][>]					{ count(); return tNEQ; }
 [>][=]					{ count(); return tGE; }
 [<][=]					{ count(); return tLE; }
 [&][&]					{ count(); return tCONCAT; }
-[=]							{ count(); return g_lingo->_inCond ? tEQ : '='; }
+[=]						{ count(); return tEQ; }
 
 {identifier}		{
 		count();


Commit: 5001cb8a1a02fb7f0e1555a7597d7e2278f315f0
    https://github.com/scummvm/scummvm/commit/5001cb8a1a02fb7f0e1555a7597d7e2278f315f0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-02T21:28:35+01:00

Commit Message:
DIRECTOR: LINGO: Simplify grammar

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 d0fc362..119043f 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -540,16 +540,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  127
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1764
+#define YYLAST   1848
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  105
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  49
+#define YYNNTS  46
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  172
+#define YYNRULES  169
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  367
+#define YYNSTATES  364
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -604,117 +604,114 @@ static const yytype_uint8 yytranslate[] =
 static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     7,     9,    12,    14,    16,    18,    20,
-      22,    23,    25,    27,    32,    37,    42,    47,    52,    57,
-      62,    67,    73,    75,    77,    79,    81,    83,    89,   100,
-     112,   116,   123,   128,   135,   145,   155,   165,   176,   187,
-     194,   195,   199,   202,   204,   207,   209,   216,   218,   225,
-     232,   235,   236,   239,   243,   245,   247,   248,   249,   251,
-     254,   257,   261,   263,   265,   267,   269,   271,   273,   275,
-     278,   281,   286,   291,   293,   295,   298,   300,   304,   308,
-     312,   316,   320,   324,   328,   332,   336,   340,   344,   348,
-     352,   355,   359,   363,   367,   371,   374,   377,   381,   385,
-     390,   395,   400,   407,   412,   419,   424,   431,   436,   443,
-     446,   449,   451,   453,   456,   458,   461,   464,   467,   469,
-     472,   475,   477,   480,   485,   490,   497,   502,   505,   509,
-     511,   515,   517,   521,   523,   527,   530,   533,   536,   539,
-     543,   546,   549,   551,   555,   558,   561,   564,   568,   571,
-     572,   576,   577,   586,   589,   590,   599,   608,   615,   618,
-     619,   621,   625,   630,   631,   633,   637,   638,   641,   642,
-     644,   648,   650
+      21,    23,    25,    30,    35,    40,    45,    50,    55,    60,
+      65,    71,    73,    75,    77,    79,    81,    87,    98,   110,
+     114,   121,   126,   133,   143,   153,   163,   174,   185,   192,
+     193,   197,   200,   202,   205,   207,   214,   216,   223,   230,
+     233,   237,   239,   241,   242,   243,   245,   248,   251,   255,
+     257,   259,   261,   263,   265,   267,   269,   272,   275,   280,
+     285,   287,   289,   292,   294,   298,   302,   306,   310,   314,
+     318,   322,   326,   330,   334,   338,   342,   346,   349,   353,
+     357,   361,   365,   368,   371,   375,   379,   384,   389,   394,
+     401,   406,   413,   418,   425,   430,   437,   440,   443,   445,
+     447,   450,   452,   455,   458,   461,   463,   466,   469,   471,
+     474,   479,   484,   491,   496,   499,   503,   505,   509,   511,
+     515,   517,   521,   524,   527,   530,   533,   537,   540,   543,
+     545,   549,   552,   555,   558,   562,   565,   566,   570,   571,
+     580,   583,   584,   593,   602,   609,   612,   613,   615,   619,
+     624,   625,   627,   631,   632,   635,   636,   638,   642,   644
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     106,     0,    -1,   106,   107,   112,    -1,   112,    -1,     1,
+     106,     0,    -1,   106,   107,   111,    -1,   111,    -1,     1,
      107,    -1,    97,    -1,    53,    -1,    58,    -1,    36,    -1,
-      52,    -1,    -1,   144,    -1,   115,    -1,    49,   133,    42,
-      28,    -1,    49,   133,    42,   134,    -1,    49,   133,    75,
-     133,    -1,    49,   133,    76,   133,    -1,    51,    28,    69,
-     133,    -1,    51,    13,    69,   133,    -1,    51,    28,    54,
-     133,    -1,    51,    13,    54,   133,    -1,    51,    14,   133,
-      54,   133,    -1,   151,    -1,   133,    -1,   135,    -1,   114,
-      -1,   116,    -1,   124,   122,   130,   129,    32,    -1,   125,
-      69,   133,   129,    54,   133,   129,   130,   129,    32,    -1,
-     125,    69,   133,   129,    34,    54,   133,   129,   130,   129,
-      32,    -1,   131,   114,   129,    -1,   132,   133,   107,   130,
-     129,    32,    -1,   132,   133,    54,   133,    -1,   126,   122,
-     108,   130,   129,    32,    -1,   126,   122,   108,   130,   129,
-     109,   130,   129,    32,    -1,   126,   122,   108,   130,   129,
-     128,   118,   129,    32,    -1,   126,   122,   108,   130,   129,
-     109,   128,   114,   129,    -1,   126,   122,   111,   128,   114,
-     129,   119,   129,   117,   129,    -1,   126,   122,   111,   128,
-     114,   129,   109,   128,   114,   129,    -1,   126,   122,   111,
-     128,   114,   129,    -1,    -1,   109,   128,   114,    -1,   118,
-     121,    -1,   121,    -1,   119,   120,    -1,   120,    -1,   127,
-     122,   111,   128,   115,   129,    -1,   119,    -1,   127,   122,
-     111,   128,   130,   129,    -1,   127,   122,   108,   128,   130,
-     129,    -1,   123,   133,    -1,    -1,    50,    57,    -1,    50,
-      56,    28,    -1,    41,    -1,   110,    -1,    -1,    -1,   128,
-      -1,   130,   107,    -1,   130,   115,    -1,    55,    28,   111,
-      -1,    87,    -1,    12,    -1,    15,    -1,    31,    -1,    29,
-      -1,   134,    -1,    23,    -1,    24,   133,    -1,    25,   153,
-      -1,    25,    98,   153,    99,    -1,    28,    98,   152,    99,
-      -1,    28,    -1,    13,    -1,    14,   133,    -1,   113,    -1,
-     133,    92,   133,    -1,   133,    93,   133,    -1,   133,    94,
-     133,    -1,   133,    95,   133,    -1,   133,    74,   133,    -1,
-     133,   100,   133,    -1,   133,   101,   133,    -1,   133,    69,
-     133,    -1,   133,    70,   133,    -1,   133,    65,   133,    -1,
-     133,    66,   133,    -1,   133,    71,   133,    -1,   133,    72,
-     133,    -1,    73,   133,    -1,   133,    91,   133,    -1,   133,
-      77,   133,    -1,   133,    78,   133,    -1,   133,    79,   133,
-      -1,    92,   133,    -1,    93,   133,    -1,    98,   133,    99,
-      -1,   102,   152,   103,    -1,    84,   133,    85,   133,    -1,
-      84,   133,    86,   133,    -1,    80,   133,    47,   133,    -1,
-      80,   133,    54,   133,    47,   133,    -1,    81,   133,    47,
-     133,    -1,    81,   133,    54,   133,    47,   133,    -1,    82,
-     133,    47,   133,    -1,    82,   133,    54,   133,    47,   133,
-      -1,    83,   133,    47,   133,    -1,    83,   133,    54,   133,
-      47,   133,    -1,    27,   133,    -1,    49,   133,    -1,   139,
-      -1,   142,    -1,    37,    50,    -1,    37,    -1,    39,   136,
-      -1,    88,   137,    -1,    64,   138,    -1,    17,    -1,    19,
-     133,    -1,    18,   133,    -1,    18,    -1,    20,   153,    -1,
-      20,    98,   153,    99,    -1,    90,    98,    28,    99,    -1,
-      90,    98,    28,   104,   152,    99,    -1,    61,   133,    56,
-     133,    -1,    61,   133,    -1,    21,    28,   152,    -1,    28,
-      -1,   136,   104,    28,    -1,    28,    -1,   137,   104,    28,
-      -1,    28,    -1,   138,   104,    28,    -1,    40,    43,    -1,
-      40,    46,    -1,    40,    48,    -1,    40,   140,    -1,    40,
-     140,   141,    -1,    40,   141,    -1,    38,   133,    -1,   133,
-      -1,    47,    45,   133,    -1,    45,   133,    -1,    62,    63,
-      -1,    62,   140,    -1,    62,   140,   141,    -1,    62,   141,
-      -1,    -1,    33,   143,   152,    -1,    -1,    44,    28,   145,
-     128,   148,   107,   150,   130,    -1,    59,    28,    -1,    -1,
-      60,    28,   146,   128,   148,   107,   150,   130,    -1,   147,
-     128,   148,   107,   150,   130,    32,   149,    -1,   147,   128,
-     148,   107,   150,   130,    -1,    89,    28,    -1,    -1,    28,
-      -1,   148,   104,    28,    -1,   148,   107,   104,    28,    -1,
-      -1,    28,    -1,   149,   104,    28,    -1,    -1,    28,   153,
-      -1,    -1,   133,    -1,   152,   104,   133,    -1,   133,    -1,
-     153,   104,   133,    -1
+      -1,   141,    -1,   114,    -1,    49,   130,    42,    28,    -1,
+      49,   130,    42,   131,    -1,    49,   130,    75,   130,    -1,
+      49,   130,    76,   130,    -1,    51,    28,    69,   130,    -1,
+      51,    13,    69,   130,    -1,    51,    28,    54,   130,    -1,
+      51,    13,    54,   130,    -1,    51,    14,   130,    54,   130,
+      -1,   148,    -1,   130,    -1,   132,    -1,   113,    -1,   115,
+      -1,   121,   130,   127,   126,    32,    -1,   122,    69,   130,
+     126,    54,   130,   126,   127,   126,    32,    -1,   122,    69,
+     130,   126,    34,    54,   130,   126,   127,   126,    32,    -1,
+     128,   113,   126,    -1,   129,   130,   107,   127,   126,    32,
+      -1,   129,   130,    54,   130,    -1,   123,   130,   108,   127,
+     126,    32,    -1,   123,   130,   108,   127,   126,   109,   127,
+     126,    32,    -1,   123,   130,   108,   127,   126,   125,   117,
+     126,    32,    -1,   123,   130,   108,   127,   126,   109,   125,
+     113,   126,    -1,   123,   130,    52,   125,   113,   126,   118,
+     126,   116,   126,    -1,   123,   130,    52,   125,   113,   126,
+     109,   125,   113,   126,    -1,   123,   130,    52,   125,   113,
+     126,    -1,    -1,   109,   125,   113,    -1,   117,   120,    -1,
+     120,    -1,   118,   119,    -1,   119,    -1,   124,   130,    52,
+     125,   114,   126,    -1,   118,    -1,   124,   130,    52,   125,
+     127,   126,    -1,   124,   130,   108,   125,   127,   126,    -1,
+      50,    57,    -1,    50,    56,    28,    -1,    41,    -1,   110,
+      -1,    -1,    -1,   125,    -1,   127,   107,    -1,   127,   114,
+      -1,    55,    28,    52,    -1,    87,    -1,    12,    -1,    15,
+      -1,    31,    -1,    29,    -1,   131,    -1,    23,    -1,    24,
+     130,    -1,    25,   150,    -1,    25,    98,   150,    99,    -1,
+      28,    98,   149,    99,    -1,    28,    -1,    13,    -1,    14,
+     130,    -1,   112,    -1,   130,    92,   130,    -1,   130,    93,
+     130,    -1,   130,    94,   130,    -1,   130,    95,   130,    -1,
+     130,    74,   130,    -1,   130,   100,   130,    -1,   130,   101,
+     130,    -1,   130,    69,   130,    -1,   130,    70,   130,    -1,
+     130,    65,   130,    -1,   130,    66,   130,    -1,   130,    71,
+     130,    -1,   130,    72,   130,    -1,    73,   130,    -1,   130,
+      91,   130,    -1,   130,    77,   130,    -1,   130,    78,   130,
+      -1,   130,    79,   130,    -1,    92,   130,    -1,    93,   130,
+      -1,    98,   130,    99,    -1,   102,   149,   103,    -1,    84,
+     130,    85,   130,    -1,    84,   130,    86,   130,    -1,    80,
+     130,    47,   130,    -1,    80,   130,    54,   130,    47,   130,
+      -1,    81,   130,    47,   130,    -1,    81,   130,    54,   130,
+      47,   130,    -1,    82,   130,    47,   130,    -1,    82,   130,
+      54,   130,    47,   130,    -1,    83,   130,    47,   130,    -1,
+      83,   130,    54,   130,    47,   130,    -1,    27,   130,    -1,
+      49,   130,    -1,   136,    -1,   139,    -1,    37,    50,    -1,
+      37,    -1,    39,   133,    -1,    88,   134,    -1,    64,   135,
+      -1,    17,    -1,    19,   130,    -1,    18,   130,    -1,    18,
+      -1,    20,   150,    -1,    20,    98,   150,    99,    -1,    90,
+      98,    28,    99,    -1,    90,    98,    28,   104,   149,    99,
+      -1,    61,   130,    56,   130,    -1,    61,   130,    -1,    21,
+      28,   149,    -1,    28,    -1,   133,   104,    28,    -1,    28,
+      -1,   134,   104,    28,    -1,    28,    -1,   135,   104,    28,
+      -1,    40,    43,    -1,    40,    46,    -1,    40,    48,    -1,
+      40,   137,    -1,    40,   137,   138,    -1,    40,   138,    -1,
+      38,   130,    -1,   130,    -1,    47,    45,   130,    -1,    45,
+     130,    -1,    62,    63,    -1,    62,   137,    -1,    62,   137,
+     138,    -1,    62,   138,    -1,    -1,    33,   140,   149,    -1,
+      -1,    44,    28,   142,   125,   145,   107,   147,   127,    -1,
+      59,    28,    -1,    -1,    60,    28,   143,   125,   145,   107,
+     147,   127,    -1,   144,   125,   145,   107,   147,   127,    32,
+     146,    -1,   144,   125,   145,   107,   147,   127,    -1,    89,
+      28,    -1,    -1,    28,    -1,   145,   104,    28,    -1,   145,
+     107,   104,    28,    -1,    -1,    28,    -1,   146,   104,    28,
+      -1,    -1,    28,   150,    -1,    -1,   130,    -1,   149,   104,
+     130,    -1,   130,    -1,   150,   104,   130,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   120,   120,   121,   122,   125,   132,   139,   146,   153,
-     156,   157,   158,   161,   167,   170,   171,   172,   178,   185,
-     191,   198,   206,   207,   208,   211,   212,   217,   230,   248,
-     262,   267,   270,   275,   285,   297,   309,   319,   329,   339,
-     351,   352,   355,   356,   359,   360,   363,   371,   372,   378,
-     386,   389,   392,   395,   402,   409,   417,   420,   423,   424,
-     425,   428,   434,   438,   441,   444,   447,   450,   451,   454,
-     457,   458,   459,   462,   466,   474,   480,   481,   482,   483,
-     484,   485,   486,   487,   488,   489,   490,   491,   492,   493,
-     494,   495,   496,   497,   498,   499,   500,   501,   502,   503,
-     504,   505,   506,   507,   508,   509,   510,   511,   512,   515,
-     520,   521,   522,   523,   524,   525,   526,   527,   528,   531,
-     534,   537,   541,   542,   543,   544,   545,   546,   547,   550,
-     551,   554,   555,   558,   559,   570,   571,   572,   573,   577,
-     581,   587,   588,   591,   592,   595,   596,   600,   604,   608,
-     608,   638,   638,   643,   644,   644,   649,   656,   662,   664,
-     665,   666,   667,   670,   671,   672,   675,   679,   687,   688,
-     689,   692,   693
+       0,   120,   120,   121,   122,   125,   130,   135,   140,   145,
+     146,   147,   150,   156,   159,   160,   161,   167,   174,   180,
+     187,   195,   196,   197,   200,   201,   206,   219,   237,   251,
+     256,   259,   264,   274,   286,   298,   308,   318,   328,   340,
+     341,   344,   345,   348,   349,   352,   360,   361,   367,   375,
+     378,   385,   392,   400,   403,   406,   407,   408,   411,   417,
+     421,   424,   427,   430,   433,   434,   437,   440,   441,   442,
+     445,   449,   457,   463,   464,   465,   466,   467,   468,   469,
+     470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
+     480,   481,   482,   483,   484,   485,   486,   487,   488,   489,
+     490,   491,   492,   493,   494,   495,   498,   503,   504,   505,
+     506,   507,   508,   509,   510,   511,   514,   517,   520,   524,
+     525,   526,   527,   528,   529,   530,   533,   534,   537,   538,
+     541,   542,   553,   554,   555,   556,   560,   564,   570,   571,
+     574,   575,   578,   579,   583,   587,   591,   591,   621,   621,
+     626,   627,   627,   632,   639,   645,   647,   648,   649,   650,
+     653,   654,   655,   658,   662,   670,   671,   672,   675,   676
 };
 #endif
 
@@ -739,14 +736,14 @@ static const char *const yytname[] =
   "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tME", "'&'",
   "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", "'<'",
   "'['", "']'", "','", "$accept", "program", "nl", "thennl", "nlelse",
-  "nlelsif", "then", "programline", "asgn", "stmtoneliner", "stmt",
-  "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
-  "elseifstmtoneliner1", "elseifstmt1", "cond", "begincond", "repeatwhile",
-  "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "tell",
-  "expr", "reference", "proc", "globallist", "propertylist",
-  "instancelist", "gotofunc", "gotoframe", "gotomovie", "playfunc", "@1",
-  "defn", "@2", "@3", "on", "argdef", "endargdef", "argstore", "macro",
-  "arglist", "nonemptyarglist", 0
+  "nlelsif", "programline", "asgn", "stmtoneliner", "stmt", "ifstmt",
+  "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
+  "elseifstmtoneliner1", "elseifstmt1", "repeatwhile", "repeatwith", "if",
+  "elseif", "begin", "end", "stmtlist", "when", "tell", "expr",
+  "reference", "proc", "globallist", "propertylist", "instancelist",
+  "gotofunc", "gotoframe", "gotomovie", "playfunc", "@1", "defn", "@2",
+  "@3", "on", "argdef", "endargdef", "argstore", "macro", "arglist",
+  "nonemptyarglist", 0
 };
 #endif
 
@@ -773,46 +770,44 @@ static const yytype_uint16 yytoknum[] =
 static const yytype_uint8 yyr1[] =
 {
        0,   105,   106,   106,   106,   107,   108,   109,   110,   111,
-     112,   112,   112,   113,   113,   113,   113,   113,   113,   113,
-     113,   113,   114,   114,   114,   115,   115,   115,   115,   115,
-     115,   115,   115,   116,   116,   116,   116,   116,   116,   116,
-     117,   117,   118,   118,   119,   119,   120,   121,   121,   121,
-     122,   123,   124,   125,   126,   127,   128,   129,   130,   130,
-     130,   131,   132,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   134,
-     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
-     135,   135,   135,   135,   135,   135,   135,   135,   135,   136,
-     136,   137,   137,   138,   138,   139,   139,   139,   139,   139,
-     139,   140,   140,   141,   141,   142,   142,   142,   142,   143,
-     142,   145,   144,   144,   146,   144,   144,   144,   147,   148,
-     148,   148,   148,   149,   149,   149,   150,   151,   152,   152,
-     152,   153,   153
+     111,   111,   112,   112,   112,   112,   112,   112,   112,   112,
+     112,   113,   113,   113,   114,   114,   114,   114,   114,   114,
+     114,   114,   115,   115,   115,   115,   115,   115,   115,   116,
+     116,   117,   117,   118,   118,   119,   120,   120,   120,   121,
+     122,   123,   124,   125,   126,   127,   127,   127,   128,   129,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   131,   132,   132,   132,
+     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
+     132,   132,   132,   132,   132,   132,   133,   133,   134,   134,
+     135,   135,   136,   136,   136,   136,   136,   136,   137,   137,
+     138,   138,   139,   139,   139,   139,   140,   139,   142,   141,
+     141,   143,   141,   141,   141,   144,   145,   145,   145,   145,
+     146,   146,   146,   147,   148,   149,   149,   149,   150,   150
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
-       0,     2,     3,     1,     2,     1,     1,     1,     1,     1,
-       0,     1,     1,     4,     4,     4,     4,     4,     4,     4,
-       4,     5,     1,     1,     1,     1,     1,     5,    10,    11,
-       3,     6,     4,     6,     9,     9,     9,    10,    10,     6,
-       0,     3,     2,     1,     2,     1,     6,     1,     6,     6,
-       2,     0,     2,     3,     1,     1,     0,     0,     1,     2,
-       2,     3,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     4,     4,     1,     1,     2,     1,     3,     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,
-       2,     1,     1,     2,     1,     2,     2,     2,     1,     2,
-       2,     1,     2,     4,     4,     6,     4,     2,     3,     1,
-       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,     8,     6,     2,     0,
-       1,     3,     4,     0,     1,     3,     0,     2,     0,     1,
-       3,     1,     3
+       0,     2,     3,     1,     2,     1,     1,     1,     1,     0,
+       1,     1,     4,     4,     4,     4,     4,     4,     4,     4,
+       5,     1,     1,     1,     1,     1,     5,    10,    11,     3,
+       6,     4,     6,     9,     9,     9,    10,    10,     6,     0,
+       3,     2,     1,     2,     1,     6,     1,     6,     6,     2,
+       3,     1,     1,     0,     0,     1,     2,     2,     3,     1,
+       1,     1,     1,     1,     1,     1,     2,     2,     4,     4,
+       1,     1,     2,     1,     3,     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,     2,     1,     1,
+       2,     1,     2,     2,     2,     1,     2,     2,     1,     2,
+       4,     4,     6,     4,     2,     3,     1,     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,     8,     6,     2,     0,     1,     3,     4,
+       0,     1,     3,     0,     2,     0,     1,     3,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -820,474 +815,490 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    63,    74,     0,    64,   118,   121,     0,     0,
-       0,    68,     0,     0,     0,    73,    66,    65,   149,   114,
+       0,     0,    60,    71,     0,    61,   115,   118,     0,     0,
+       0,    65,     0,     0,     0,    70,    63,    62,   146,   111,
+       0,     0,    51,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    59,
+       0,     0,     0,     0,     0,     0,   165,     0,     3,    73,
+      24,    11,    25,     0,     0,     0,     0,     0,    22,    64,
+      23,   108,   109,    10,    53,    21,     5,     4,    70,     0,
+      72,   117,   116,     0,   168,   119,   165,    66,     0,    67,
+     106,   165,   164,   165,   110,   126,   112,     0,   132,     0,
+     133,     0,   134,   139,   135,   137,   148,   107,     0,    49,
+       0,     0,     0,     0,   150,   151,   124,   142,   143,   145,
+     130,   114,    87,     0,     0,     0,     0,     0,   128,   113,
+     155,     0,    92,    93,     0,   166,     0,     1,     9,    53,
        0,     0,    54,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    62,
-       0,     0,     0,     0,     0,     0,   168,     0,     3,    76,
-      25,    12,    26,    51,     0,    51,     0,     0,    23,    67,
-      24,   111,   112,    11,    56,    22,     5,     4,    73,     0,
-      75,   120,   119,     0,   171,   122,   168,    69,     0,    70,
-     109,   168,   167,   168,   113,   129,   115,     0,   135,     0,
-     136,     0,   137,   142,   138,   140,   151,   110,     0,    52,
-       0,     0,     0,     0,   153,   154,   127,   145,   146,   148,
-     133,   117,    90,     0,     0,     0,     0,     0,   131,   116,
-     158,     0,    95,    96,     0,   169,     0,     1,    10,    56,
-       0,     0,     0,    57,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   159,   168,     0,   171,     0,     0,   128,     0,
-     169,     0,   150,     0,   141,   144,     0,   139,    56,     0,
-       0,     0,    53,     0,     0,     0,     0,     0,     9,    61,
-      56,     0,   147,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    97,    98,     0,     2,
-      58,    57,    50,    57,     6,    56,    56,    30,     0,    56,
-      86,    87,    84,    85,    88,    89,    81,    92,    93,    94,
-      91,    77,    78,    79,    80,    82,    83,   160,     0,   123,
-     172,    71,    72,   130,   143,   159,    13,    14,    15,    16,
-      20,    18,     0,    19,    17,   159,   126,   134,   101,     0,
-     103,     0,   105,     0,   107,     0,    99,   100,   132,   124,
-     168,   170,    59,    60,     0,     0,    57,     0,    32,    57,
-       0,   166,     0,    21,     0,     0,     0,     0,     0,     0,
-      27,     0,     0,    56,    57,     0,   161,     0,    56,   166,
-     166,   102,   104,   106,   108,   125,     0,    57,    33,     7,
-      56,     0,    39,    31,   162,   157,    56,    56,    57,    56,
-      58,    57,     8,    55,    57,    47,    45,    43,    51,    56,
-      57,    51,   163,   152,   155,    56,    57,    57,     0,    42,
-       0,    44,     0,     0,    40,     0,   164,   156,    57,     0,
-      36,    34,    35,    56,    56,    57,    56,    57,    56,     0,
-       0,    28,    56,    56,    38,     0,    37,     0,   165,    29,
-      57,    57,    57,    41,    49,    46,    48
+       0,   156,   165,     0,   168,     0,     0,   125,     0,   166,
+       0,   147,     0,   138,   141,     0,   136,    53,     0,     0,
+       0,    50,     0,     0,     0,     0,     0,    58,    53,     0,
+     144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    94,    95,     0,     2,    55,    54,
+      54,    53,     6,    53,    29,     0,    53,    83,    84,    81,
+      82,    85,    86,    78,    89,    90,    91,    88,    74,    75,
+      76,    77,    79,    80,   157,     0,   120,   169,    68,    69,
+     127,   140,   156,    12,    13,    14,    15,    19,    17,     0,
+      18,    16,   156,   123,   131,    98,     0,   100,     0,   102,
+       0,   104,     0,    96,    97,   129,   121,   165,   167,    56,
+      57,     0,     0,     0,    54,    31,    54,     0,   163,     0,
+      20,     0,     0,     0,     0,     0,     0,    26,     0,     0,
+      54,    53,     0,   158,     0,    53,   163,   163,    99,   101,
+     103,   105,   122,     0,    54,    38,    32,     7,    53,     0,
+      30,   159,   154,    53,    53,    54,    53,     8,    53,    52,
+      54,    44,     0,    55,    54,    54,    46,    42,     0,   160,
+     149,   152,    53,    54,     0,    43,    39,     0,    54,     0,
+      41,     0,     0,   161,   153,    54,     0,    54,    53,    54,
+      53,    35,    33,    34,    53,    53,     0,     0,    27,    37,
+       0,    36,     0,    53,    53,   162,    28,    40,    54,    54,
+      54,    45,    47,    48
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    47,   262,   205,   300,   313,   179,    48,    49,    50,
-     263,    52,   347,   314,   315,   316,   317,   129,   130,    53,
-      54,    55,   321,   200,   207,   201,    56,    57,    58,    59,
-      60,    86,   119,   111,    61,    94,    95,    62,    83,    63,
-     168,   180,    64,   228,   337,   288,    65,   161,    75
+      -1,    47,   259,   203,   298,   309,    48,    49,    50,   260,
+      52,   339,   315,   316,   311,   317,    53,    54,    55,   312,
+     198,   204,   199,    56,    57,    58,    59,    60,    86,   119,
+     111,    61,    94,    95,    62,    83,    63,   167,   178,    64,
+     225,   334,   285,    65,   160,    75
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -288
+#define YYPACT_NINF -291
 static const yytype_int16 yypact[] =
 {
-     354,   -81,  -288,  -288,  1007,  -288,  -288,  1007,  1007,  1047,
-      37,  -288,  1007,  1123,  1007,  1163,  -288,  -288,  -288,    41,
-      46,   891,  -288,    70,  1007,    38,    12,    90,    97,    99,
-    1007,   931,   104,  1007,  1007,  1007,  1007,  1007,  1007,  -288,
-     127,   132,    63,  1007,  1007,  1007,  1007,     4,  -288,  -288,
-    -288,  -288,  -288,  -288,    93,  -288,   809,  1007,  1630,  -288,
-    -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,    65,  1007,
-    1630,  1630,  1630,  1007,  1630,    60,  1007,  1630,  1007,    60,
-    1630,  1007,    60,  1007,  -288,  -288,    62,  1007,  -288,  1007,
-    -288,   122,  -288,  1630,    36,  -288,  -288,  1197,   140,  -288,
-      -3,  1007,    -2,   119,  -288,  -288,  1527,  -288,    36,  -288,
-    -288,    73,   -39,  1230,  1263,  1296,  1329,  1560,  -288,    74,
-    -288,   146,   -39,   -39,  1593,  1630,    20,  -288,   445,  -288,
-    1007,  1007,    52,  -288,  1494,  1007,  1007,  1007,  1007,  1007,
-    1007,  1007,  1007,  1007,  1007,  1007,  1007,  1007,  1007,  1007,
-    1007,  1007,   151,  1007,  1197,  1593,   -77,  1007,    77,   -28,
-    1593,   -14,    77,   165,  1630,  1630,  1007,  -288,  -288,   126,
-    1007,  1007,  -288,  1007,  1007,   785,  1007,  1007,  -288,  -288,
-    -288,  1007,  -288,   167,  1007,  1007,  1007,  1007,  1007,  1007,
-    1007,  1007,  1007,  1007,   168,    18,  -288,  -288,  1007,  -288,
-    -288,   627,  1630,  1630,  -288,  -288,  -288,  -288,  1007,  -288,
-      15,    15,    15,    15,  1663,  1663,   -39,  1630,    15,    15,
-      19,   -46,   -46,   -39,   -39,  1630,  1630,  -288,   -44,  -288,
-    1630,  -288,  -288,  -288,  1630,   151,  -288,  -288,  1630,  1630,
-    1630,    15,  1007,  1630,    15,   151,  1630,  -288,  1630,  1362,
-    1630,  1395,  1630,  1428,  1630,  1461,  1630,  1630,  -288,  -288,
-    1007,  1630,  -288,  -288,   166,    24,   627,   809,  1630,   627,
-     171,   102,   -44,  1630,   -44,  1007,  1007,  1007,  1007,    27,
-    -288,   155,  1007,    -8,  -288,   178,  -288,   183,  -288,   102,
-     102,  1630,  1630,  1630,  1630,  -288,  1007,  1630,  -288,  -288,
-    -288,   177,     5,  -288,  -288,   536,  -288,  -288,  1630,  -288,
-     809,   627,  -288,  -288,   177,   177,  -288,  -288,  -288,  -288,
-     177,  -288,   186,   627,   627,  -288,   627,  -288,   184,  -288,
-     185,  -288,    52,   809,   157,   119,  -288,   114,   627,   188,
-    -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,   193,
-     190,  -288,  -288,   718,  -288,   809,  -288,   718,  -288,  -288,
-     627,  -288,   627,  -288,  -288,  -288,  -288
+     372,   -75,  -291,  -291,  1025,  -291,  -291,  1025,  1025,  1065,
+      27,  -291,  1025,  1141,  1025,  1181,  -291,  -291,  -291,   -25,
+      35,   909,  -291,    39,  1025,    45,    51,    57,    65,    76,
+    1025,   949,    79,  1025,  1025,  1025,  1025,  1025,  1025,  -291,
+      88,    89,    20,  1025,  1025,  1025,  1025,     2,  -291,  -291,
+    -291,  -291,  -291,  1025,    50,  1025,   827,  1025,  1747,  -291,
+    -291,  -291,  -291,  -291,  -291,  -291,  -291,  -291,    28,  1025,
+    1747,  1747,  1747,  1025,  1747,    21,  1025,  1747,  1025,    21,
+    1747,  1025,    21,  1025,  -291,  -291,    46,  1025,  -291,  1025,
+    -291,   106,  -291,  1747,    36,  -291,  -291,  1215,   124,  -291,
+     -10,  1025,    18,   102,  -291,  -291,  1644,  -291,    36,  -291,
+    -291,    52,   -53,  1248,  1281,  1314,  1347,  1677,  -291,    53,
+    -291,   127,   -53,   -53,  1710,  1747,     6,  -291,   463,  1747,
+    1025,  1512,  -291,  1611,  1025,  1025,  1025,  1025,  1025,  1025,
+    1025,  1025,  1025,  1025,  1025,  1025,  1025,  1025,  1025,  1025,
+    1025,   130,  1025,  1215,  1710,   -46,  1025,    55,   -30,  1710,
+      -8,    55,   132,  1747,  1747,  1025,  -291,  -291,    85,  1025,
+    1025,  -291,  1025,  1025,   803,  1025,  1025,  -291,  -291,  1025,
+    -291,   133,  1025,  1025,  1025,  1025,  1025,  1025,  1025,  1025,
+    1025,  1025,   136,    -7,  -291,  -291,  1025,  -291,  -291,   645,
+    1747,  -291,  -291,  -291,  -291,  1025,  -291,    29,    29,    29,
+      29,   151,   151,   -53,  1747,    29,    29,   173,    -6,    -6,
+     -53,   -53,  1747,  1747,  -291,   -48,  -291,  1747,  -291,  -291,
+    -291,  1747,   130,  -291,  -291,  1747,  1747,  1747,    29,  1025,
+    1747,    29,   130,  1747,  -291,  1747,  1380,  1747,  1413,  1747,
+    1446,  1747,  1479,  1747,  1747,  -291,  -291,  1025,  1747,  -291,
+    -291,   139,     3,   827,   645,  1747,   645,   137,    64,   -48,
+    1747,   -48,  1025,  1025,  1025,  1025,     1,  -291,   121,  1025,
+    -291,   -29,   145,  -291,   150,  -291,    64,    64,  1747,  1747,
+    1747,  1747,  -291,  1025,  1747,   -22,  -291,  -291,  -291,   153,
+    -291,  -291,   554,  -291,  -291,  1747,  -291,  -291,  -291,  -291,
+     153,  -291,  1025,   827,   645,   153,   153,  -291,  1025,   163,
+     645,   645,  -291,   645,   827,  -291,   134,  1578,  -291,   162,
+    -291,   164,  1545,  -291,    91,   645,   166,  -291,  -291,  -291,
+    -291,  -291,  -291,  -291,  -291,  -291,   171,   168,  -291,  -291,
+     827,  -291,   736,   736,  -291,  -291,  -291,  -291,  -291,   645,
+     645,  -291,  -291,  -291
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -288,  -288,    17,  -108,  -287,  -288,  -127,    98,  -288,   -55,
-       0,  -288,  -288,  -288,   -75,  -218,   -89,   -53,  -288,  -288,
-    -288,  -288,  -244,   -47,     1,  -106,  -288,  -288,    -1,    59,
-    -288,  -288,  -288,  -288,  -288,   198,   -21,  -288,  -288,  -288,
-    -288,  -288,  -288,  -176,  -288,  -132,  -288,   -37,     6
+    -291,  -291,    15,  -131,  -280,  -291,    77,  -291,   -49,     0,
+    -291,  -291,  -291,   -91,  -290,  -109,  -291,  -291,  -291,  -276,
+      -4,    23,   -95,  -291,  -291,    -3,    42,  -291,  -291,  -291,
+    -291,  -291,   176,   -18,  -291,  -291,  -291,  -291,  -291,  -291,
+    -181,  -291,  -172,  -291,   -38,     4
 };
 
 /* 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 -11
+#define YYTABLE_NINF -10
 static const yytype_int16 yytable[] =
 {
-      51,   133,   132,    70,   127,   206,    71,    72,    74,   126,
-     109,    77,    74,    80,    74,   319,    66,   152,    67,    79,
-      93,    82,   229,    97,   298,   100,   101,   157,   141,   106,
-      93,   142,   112,   113,   114,   115,   116,   117,   142,   158,
-     102,   312,   122,   123,   124,   125,   162,   346,   148,   149,
-     299,   173,   176,    66,   150,   151,   134,   318,   281,   272,
-     270,   150,   151,   299,   128,    76,   174,   177,   154,   274,
-     318,   231,   155,   167,    85,   125,   157,   155,   282,   156,
-     160,    89,   125,    91,   159,   232,   164,   182,   165,   141,
-     198,    84,   142,   141,    98,    99,   142,   331,    96,   266,
-     175,    66,   331,   269,   178,   204,   145,   146,   147,   148,
-     149,   146,   147,   148,   149,   150,   151,   259,   103,   150,
-     151,   235,   260,   197,   198,   104,   295,   105,    51,   202,
-     203,   198,   110,   245,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   209,   125,    14,   236,   118,   230,   306,   307,   267,
-     120,   121,   131,   153,   157,   234,   163,   166,   172,   238,
-     239,   178,   240,   241,   195,   243,   244,   183,   194,   227,
-     246,   198,   305,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,   233,   311,   247,   258,   261,   280,   286,
-     323,   324,   264,   326,   265,   344,   287,   268,   348,   296,
-     303,   304,   284,   312,   336,   299,   341,   342,   349,   338,
-     351,   358,   359,   279,   343,   329,   199,   320,   237,   108,
-       0,     0,     0,     0,     0,     0,   301,     0,     0,     0,
-       0,   273,     0,     0,     0,   271,   360,   362,     0,     0,
-       0,     0,     0,   310,     0,   327,     0,     0,     0,   125,
-       0,     0,     0,     0,     0,   332,     0,   283,   335,     0,
-     285,     0,   333,     0,   291,   292,   293,   294,   345,     0,
-       0,   297,     0,     0,     0,   302,     0,     0,     0,   289,
-       0,   290,     0,     0,     0,   308,   352,   353,   309,   355,
-     363,   357,     0,     0,     0,     0,     0,     0,     0,   325,
-       0,     0,   328,     0,     0,   330,     0,     0,     0,     0,
-       0,   334,     0,     0,     0,     0,     0,   339,   340,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   350,
-       0,     0,     0,     0,     0,     0,   354,     0,   356,     0,
-       0,     0,     0,   361,   -10,     1,     0,   361,     0,     0,
-       0,   364,   365,   366,     0,     0,     2,     3,     4,     5,
+      51,    70,   127,   296,    71,    72,    74,   132,   126,    77,
+      74,    80,    74,   109,   307,   308,    67,    79,    93,    82,
+     325,    97,    66,   318,   141,    84,   325,   106,    93,   297,
+     112,   113,   114,   115,   116,   117,   297,   278,   157,   318,
+     122,   123,   124,   125,   172,   161,   338,   149,   150,    66,
+     129,   269,   131,   226,   133,    76,   267,   279,   156,   173,
+     151,   271,   128,    85,   100,   101,   153,    96,   140,   228,
+     154,   141,   175,   125,   156,   154,   166,   155,   159,   102,
+     125,    89,   158,    91,   163,   103,   164,   176,   147,   148,
+     180,   229,   256,   104,   149,   150,   196,   257,   174,    66,
+     292,    98,    99,   140,   105,   196,   141,   110,   264,   195,
+     196,   266,    14,   233,   303,   304,   118,   120,   121,   130,
+     144,   145,   146,   147,   148,   156,   152,   200,    51,   149,
+     150,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   206,   125,
+     162,   165,   171,   227,   177,   193,   181,   192,   224,   196,
+     230,   244,   231,   232,   255,   283,   235,   236,   284,   237,
+     238,   277,   240,   241,   242,   293,   243,   300,   301,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   307,
+     302,   333,   297,   258,   342,   346,   343,   263,   348,   355,
+     356,   345,   265,   314,   310,   197,   330,   108,   320,   321,
+     234,   323,     0,     0,   280,     0,   134,   135,     0,   276,
+     136,   137,   261,   262,     0,   140,     0,   335,   141,   142,
+     143,     0,     0,     0,     0,     0,   270,     0,     0,     0,
+     268,     0,   144,   145,   146,   147,   148,   140,     0,     0,
+     141,   149,   150,     0,   125,     0,     0,     0,   359,   360,
+       0,     0,     0,     0,   328,   145,   146,   147,   148,   288,
+     289,   290,   291,   149,   150,   337,   294,   299,     0,     0,
+       0,     0,     0,     0,   286,     0,   287,   281,     0,   282,
+     305,     0,     0,     0,   313,     0,     0,     0,     0,     0,
+       0,   357,     0,   295,   324,     0,     0,     0,     0,   327,
+       0,     0,     0,     0,     0,   332,     0,   306,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   322,     0,
+       0,     0,     0,   326,   350,     0,   352,   329,   331,     0,
+     353,   354,     0,     0,     0,     0,   336,     0,     0,     0,
+       0,   341,   358,   358,     0,     0,     0,     0,   347,     0,
+     349,     0,   351,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    -9,     1,     0,     0,     0,     0,     0,     0,
+       0,   361,   362,   363,     2,     3,     4,     5,     0,     6,
+       7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
+      15,    16,     0,    17,     0,    18,     0,     0,     0,    19,
+       0,    20,    21,    22,     0,     0,    23,     0,     0,     0,
+       0,    24,    25,    26,     0,     0,     0,    27,     0,     0,
+       0,    28,    29,    30,    31,     0,    32,     0,     0,     0,
+       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
+       0,     0,    34,    35,    36,    37,    38,     0,     0,    39,
+      40,    41,    42,     0,    43,    44,     0,     0,     0,    -9,
+      45,     0,     0,     0,    46,     2,     3,     4,     5,     0,
+       6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
+      14,    15,    16,     0,    17,     0,    18,     0,     0,     0,
+      19,     0,    20,    21,    22,     0,     0,    23,     0,     0,
+       0,     0,    24,    25,    26,     0,     0,     0,    27,     0,
+       0,     0,    28,    29,    30,    31,     0,    32,     0,     0,
+       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
+       0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
+      39,    40,    41,    42,     0,    43,    44,     0,     0,     0,
+       0,    45,     0,     0,     0,    46,     2,     3,     4,     5,
        0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,    14,    15,    16,     0,    17,     0,    18,     0,     0,
-       0,    19,     0,    20,    21,    22,     0,     0,    23,     0,
+       0,    14,    15,    16,     0,    17,   319,    18,     0,     0,
+       0,    19,     0,    20,    21,    22,     0,     0,     0,     0,
        0,     0,     0,    24,    25,    26,     0,     0,     0,    27,
-       0,     0,     0,    28,    29,    30,    31,     0,    32,     0,
+       0,     0,     0,     0,     0,    30,    31,     0,    32,     0,
        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
        0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
-       0,    39,    40,    41,    42,     0,    43,    44,     0,     0,
-       0,   -10,    45,     0,     0,     0,    46,     2,     3,     4,
+       0,    39,    40,     0,    42,     0,    43,    44,     0,     0,
+       0,    66,    45,     0,     0,     0,    46,     2,     3,     4,
        5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
       13,     0,    14,    15,    16,     0,    17,     0,    18,     0,
-       0,     0,    19,     0,    20,    21,    22,     0,     0,    23,
+       0,     0,    19,     0,    20,    21,    22,     0,     0,     0,
        0,     0,     0,     0,    24,    25,    26,     0,     0,     0,
-      27,     0,     0,     0,    28,    29,    30,    31,     0,    32,
+      27,     0,     0,     0,     0,     0,    30,    31,     0,    32,
        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
        0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
-       0,     0,    39,    40,    41,    42,     0,    43,    44,     0,
-       0,     0,     0,    45,     0,     0,     0,    46,     2,     3,
+       0,     0,    39,    40,     0,    42,     0,    43,    44,     0,
+       0,     0,    66,    45,     0,     0,     0,    46,     2,     3,
        4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,    14,    15,    16,     0,    17,   322,    18,
+      12,    13,     0,    14,    15,    16,     0,    17,     0,    18,
        0,     0,     0,    19,     0,    20,    21,    22,     0,     0,
        0,     0,     0,     0,     0,    24,    25,    26,     0,     0,
        0,    27,     0,     0,     0,     0,     0,    30,    31,     0,
       32,     0,     0,     0,     0,     0,     0,     0,     0,    33,
        0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
       38,     0,     0,    39,    40,     0,    42,     0,    43,    44,
-       0,     0,     0,    66,    45,     0,     0,     0,    46,     2,
+       0,     0,     0,     0,    45,     0,     0,     0,    46,     2,
        3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
-      11,    12,    13,     0,    14,    15,    16,     0,    17,     0,
-      18,     0,     0,     0,    19,     0,    20,    21,    22,     0,
-       0,     0,     0,     0,     0,     0,    24,    25,    26,     0,
-       0,     0,    27,     0,     0,     0,     0,     0,    30,    31,
-       0,    32,     0,     0,     0,     0,     0,     0,     0,     0,
-      33,     0,     0,     0,     0,     0,     0,    34,    35,    36,
-      37,    38,     0,     0,    39,    40,     0,    42,     0,    43,
-      44,     0,     0,     0,    66,    45,     0,     0,     0,    46,
-       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
-       0,    11,    12,    13,     0,    14,    15,    16,     0,    17,
-       0,    18,     0,     0,     0,    19,     0,    20,    21,    22,
-       0,     0,     0,     0,     0,     0,     0,    24,    25,    26,
-       0,     0,     0,    27,     0,     0,     0,     0,     0,    30,
-      31,     0,    32,     0,     0,     0,     0,     0,     0,     0,
-       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
-      36,    37,    38,     0,     0,    39,    40,     0,    42,     0,
-      43,    44,     0,     0,     0,     0,    45,     0,     0,     0,
-      46,     2,     3,     4,     5,     0,     6,     7,     8,     9,
-      10,     0,    11,    12,    13,     0,    14,    15,    16,   242,
-      17,     0,    18,     0,     0,     0,    19,     0,    20,    21,
-     135,   136,     0,     0,   137,   138,   139,   140,    24,   141,
-      26,     0,   142,   143,   144,     0,     0,     0,     0,     0,
-      30,    31,     0,    32,     0,     0,   145,   146,   147,   148,
-     149,     0,    33,     0,     0,   150,   151,     0,     0,    34,
-      35,    36,    37,    38,     0,     0,     0,    40,     0,    42,
-       0,    43,    44,     2,     3,     4,     5,    45,     0,     0,
-       0,    46,     0,     0,    11,    12,    13,     0,    14,    68,
-      16,     0,    17,     0,     0,     0,     0,     0,     0,    87,
-       0,     0,     0,     0,    88,     0,    89,    90,    91,    92,
-      69,     0,    26,     2,     3,     4,     5,     0,     0,     0,
-       0,     0,     0,     0,    11,    12,    13,     0,    14,    68,
-      16,     0,    17,     0,    33,     0,     0,     0,     0,    87,
-       0,    34,    35,    36,    37,    38,    89,     0,    91,     0,
-      69,     0,    26,    43,    44,     0,     0,     0,     0,    45,
-       0,     0,     0,    46,   107,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
-       0,    34,    35,    36,    37,    38,     0,     0,     0,     2,
-       3,     4,     5,    43,    44,     0,     0,     0,     0,    45,
-      11,    12,    13,    46,    14,    68,    16,     0,    17,     0,
+      11,    12,    13,     0,    14,    15,    16,   239,    17,     0,
+      18,     0,     0,     0,    19,     0,    20,    21,   134,   135,
+       0,     0,   136,   137,   138,   139,    24,   140,    26,     0,
+     141,   142,   143,     0,     0,     0,     0,     0,    30,    31,
+       0,    32,     0,     0,   144,   145,   146,   147,   148,     0,
+      33,     0,     0,   149,   150,     0,     0,    34,    35,    36,
+      37,    38,     0,     0,     0,    40,     0,    42,     0,    43,
+      44,     2,     3,     4,     5,    45,     0,     0,     0,    46,
+       0,     0,    11,    12,    13,     0,    14,    68,    16,     0,
+      17,     0,     0,     0,     0,     0,     0,    87,     0,     0,
+       0,     0,    88,     0,    89,    90,    91,    92,    69,     0,
+      26,     2,     3,     4,     5,     0,     0,     0,     0,     0,
+       0,     0,    11,    12,    13,     0,    14,    68,    16,     0,
+      17,     0,    33,     0,     0,     0,     0,    87,     0,    34,
+      35,    36,    37,    38,    89,     0,    91,     0,    69,     0,
+      26,    43,    44,     0,     0,     0,     0,    45,     0,     0,
+       0,    46,   107,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
+      35,    36,    37,    38,     0,     0,     0,     2,     3,     4,
+       5,    43,    44,     0,     0,     0,     0,    45,    11,    12,
+      13,    46,    14,    68,    16,     0,    17,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    69,     0,    26,     2,
-       3,     4,     5,     0,     0,     0,     0,     0,     0,     0,
-      11,    12,    13,     0,    14,    68,    16,     0,    17,     0,
-      33,     0,     0,     0,     0,     0,     0,    34,    35,    36,
-      37,    38,     0,     0,     0,     0,    69,     0,    26,    43,
-      44,     0,     0,     0,     0,    45,     0,     0,     0,    46,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      33,     0,     0,     0,     0,     0,     0,    34,    35,    36,
-      37,    38,     0,     0,     0,     2,     3,     4,     5,    43,
-      44,     0,     0,     0,     0,    73,    11,    12,    13,    46,
-      14,    68,    16,     0,    17,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    69,     0,    26,     2,     3,     4,     5,     0,
-       0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
-      14,    68,    16,     0,    17,     0,    33,     0,     0,     0,
-       0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
-       0,     0,    69,     0,    26,    43,    44,     0,     0,     0,
-       0,    78,     0,     0,     0,    46,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    33,     0,     0,   169,
-       0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
-       0,     0,     0,     0,     0,    43,    44,     0,     0,     0,
-       0,    81,   135,   136,     0,    46,   137,   138,   139,   140,
-       0,   141,   170,   171,   142,   143,   144,   184,     0,     0,
-       0,     0,     0,     0,   185,     0,     0,     0,   145,   146,
-     147,   148,   149,     0,     0,   135,   136,   150,   151,   137,
-     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
-     186,     0,     0,     0,     0,     0,     0,   187,     0,     0,
-       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
-     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,   188,     0,     0,     0,     0,     0,     0,
-     189,     0,     0,     0,   145,   146,   147,   148,   149,     0,
-       0,   135,   136,   150,   151,   137,   138,   139,   140,     0,
-     141,     0,     0,   142,   143,   144,   190,     0,     0,     0,
-       0,     0,     0,   191,     0,     0,     0,   145,   146,   147,
-     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
-     139,   140,     0,   141,     0,     0,   142,   143,   144,   275,
+       0,     0,     0,     0,    69,     0,    26,     2,     3,     4,
+       5,     0,     0,     0,     0,     0,     0,     0,    11,    12,
+      13,     0,    14,    68,    16,     0,    17,     0,    33,     0,
+       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
+       0,     0,     0,     0,    69,     0,    26,    43,    44,     0,
+       0,     0,     0,    45,     0,     0,     0,    46,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
+       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
+       0,     0,     0,     2,     3,     4,     5,    43,    44,     0,
+       0,     0,     0,    73,    11,    12,    13,    46,    14,    68,
+      16,     0,    17,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     145,   146,   147,   148,   149,     0,     0,   135,   136,   150,
-     151,   137,   138,   139,   140,     0,   141,     0,     0,   142,
-     143,   144,   276,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
-     135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
-       0,     0,   142,   143,   144,   277,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   145,   146,   147,   148,
-     149,     0,     0,   135,   136,   150,   151,   137,   138,   139,
-     140,     0,   141,     0,     0,   142,   143,   144,   278,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   145,
-     146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
-     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,     0,     0,     0,     0,     0,     0,   208,     0,
-       0,     0,   145,   146,   147,   148,   149,     0,     0,   135,
-     136,   150,   151,   137,   138,   139,   140,     0,   141,     0,
-       0,   142,   143,   144,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   181,     0,   145,   146,   147,   148,   149,
-       0,    66,   135,   136,   150,   151,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   145,   146,
-     147,   148,   149,     0,     0,   135,   136,   150,   151,   137,
-     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
-       0,     0,     0,     0,     0,   192,   193,     0,     0,     0,
-       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
-     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   145,   146,   147,   148,   149,     0,
-       0,     0,   196,   150,   151,   135,   136,     0,     0,   137,
-     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
+      69,     0,    26,     2,     3,     4,     5,     0,     0,     0,
+       0,     0,     0,     0,    11,    12,    13,     0,    14,    68,
+      16,     0,    17,     0,    33,     0,     0,     0,     0,     0,
+       0,    34,    35,    36,    37,    38,     0,     0,     0,     0,
+      69,     0,    26,    43,    44,     0,     0,     0,     0,    78,
+       0,     0,     0,    46,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,     0,   168,     0,     0,
+       0,    34,    35,    36,    37,    38,     0,     0,     0,     0,
+       0,     0,     0,    43,    44,     0,     0,     0,     0,    81,
+     134,   135,     0,    46,   136,   137,   138,   139,     0,   140,
+     169,   170,   141,   142,   143,   182,     0,     0,     0,     0,
+       0,     0,   183,     0,     0,     0,   144,   145,   146,   147,
+     148,     0,     0,   134,   135,   149,   150,   136,   137,   138,
+     139,     0,   140,     0,     0,   141,   142,   143,   184,     0,
+       0,     0,     0,     0,     0,   185,     0,     0,     0,   144,
+     145,   146,   147,   148,     0,     0,   134,   135,   149,   150,
+     136,   137,   138,   139,     0,   140,     0,     0,   141,   142,
+     143,   186,     0,     0,     0,     0,     0,     0,   187,     0,
+       0,     0,   144,   145,   146,   147,   148,     0,     0,   134,
+     135,   149,   150,   136,   137,   138,   139,     0,   140,     0,
+       0,   141,   142,   143,   188,     0,     0,     0,     0,     0,
+       0,   189,     0,     0,     0,   144,   145,   146,   147,   148,
+       0,     0,   134,   135,   149,   150,   136,   137,   138,   139,
+       0,   140,     0,     0,   141,   142,   143,   272,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   144,   145,
+     146,   147,   148,     0,     0,   134,   135,   149,   150,   136,
+     137,   138,   139,     0,   140,     0,     0,   141,   142,   143,
+     273,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   144,   145,   146,   147,   148,     0,     0,   134,   135,
+     149,   150,   136,   137,   138,   139,     0,   140,     0,     0,
+     141,   142,   143,   274,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   144,   145,   146,   147,   148,     0,
+       0,   134,   135,   149,   150,   136,   137,   138,   139,     0,
+     140,     0,     0,   141,   142,   143,   275,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   144,   145,   146,
+     147,   148,     0,     0,   134,   135,   149,   150,   136,   137,
+     138,   139,     0,   140,     0,     0,   141,   142,   143,     0,
+       0,     0,     0,     0,   201,   202,     0,     0,     0,     0,
+     144,   145,   146,   147,   148,     0,     0,   134,   135,   149,
+     150,   136,   137,   138,   139,     0,   140,     0,     0,   141,
+     142,   143,     0,     0,     0,     0,     0,   344,   202,     0,
+       0,     0,     0,   144,   145,   146,   147,   148,     0,     0,
+     134,   135,   149,   150,   136,   137,   138,   139,     0,   140,
+       0,     0,   141,   142,   143,     0,     0,     0,     0,     0,
+     340,     0,     0,     0,     0,     0,   144,   145,   146,   147,
+     148,     0,     0,   134,   135,   149,   150,   136,   137,   138,
+     139,     0,   140,     0,     0,   141,   142,   143,     0,     0,
+       0,     0,     0,     0,     0,   205,     0,     0,     0,   144,
+     145,   146,   147,   148,     0,     0,   134,   135,   149,   150,
+     136,   137,   138,   139,     0,   140,     0,     0,   141,   142,
+     143,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     179,     0,   144,   145,   146,   147,   148,     0,    66,   134,
+     135,   149,   150,   136,   137,   138,   139,     0,   140,     0,
+       0,   141,   142,   143,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   144,   145,   146,   147,   148,
+       0,     0,   134,   135,   149,   150,   136,   137,   138,   139,
+       0,   140,     0,     0,   141,   142,   143,     0,     0,     0,
+       0,     0,   190,   191,     0,     0,     0,     0,   144,   145,
+     146,   147,   148,     0,     0,   134,   135,   149,   150,   136,
+     137,   138,   139,     0,   140,     0,     0,   141,   142,   143,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
-     150,   151,   137,   138,     0,     0,     0,   141,     0,     0,
-     142,   143,   144,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   145,   146,   147,   148,   149,     0,
-       0,     0,     0,   150,   151
+       0,   144,   145,   146,   147,   148,     0,     0,     0,   194,
+     149,   150,   134,   135,     0,     0,   136,   137,   138,   139,
+       0,   140,     0,     0,   141,   142,   143,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   144,   145,
+     146,   147,   148,     0,     0,     0,     0,   149,   150
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    56,    55,     4,     0,   132,     7,     8,     9,    46,
-      31,    12,    13,    14,    15,   302,    97,    64,     1,    13,
-      21,    15,    99,    24,    32,    13,    14,   104,    74,    30,
-      31,    77,    33,    34,    35,    36,    37,    38,    77,    76,
-      28,    36,    43,    44,    45,    46,    83,   334,    94,    95,
-      58,    54,    54,    97,   100,   101,    57,   301,    34,   235,
-     104,   100,   101,    58,    47,    28,    69,    69,    69,   245,
-     314,    99,    73,    94,    28,    76,   104,    78,    54,    73,
-      81,    45,    83,    47,    78,    99,    87,   108,    89,    74,
-     104,    50,    77,    74,    56,    57,    77,   315,    28,   205,
-     101,    97,   320,   209,    52,    53,    91,    92,    93,    94,
-      95,    92,    93,    94,    95,   100,   101,    99,    28,   100,
-     101,   168,   104,   103,   104,    28,    99,    28,   128,   130,
-     131,   104,    28,   180,   135,   136,   137,   138,   139,   140,
-     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   134,   153,    27,    28,    28,   157,   289,   290,   206,
-      28,    98,    69,    98,   104,   166,   104,    45,    28,   170,
-     171,    52,   173,   174,    28,   176,   177,   104,   104,    28,
-     181,   104,   288,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,    28,   300,    28,    28,   198,    32,    28,
-     306,   307,   201,   309,   203,   332,   104,   208,   335,    54,
-      32,    28,   267,    36,    28,    58,    32,    32,   104,   325,
-      32,    28,    32,   260,   332,   314,   128,   302,   169,    31,
-      -1,    -1,    -1,    -1,    -1,    -1,   283,    -1,    -1,    -1,
-      -1,   242,    -1,    -1,    -1,   228,   352,   353,    -1,    -1,
-      -1,    -1,    -1,   300,    -1,   310,    -1,    -1,    -1,   260,
-      -1,    -1,    -1,    -1,    -1,   318,    -1,   266,   321,    -1,
-     269,    -1,   319,    -1,   275,   276,   277,   278,   333,    -1,
-      -1,   282,    -1,    -1,    -1,   284,    -1,    -1,    -1,   272,
-      -1,   274,    -1,    -1,    -1,   296,   343,   344,   297,   346,
-     355,   348,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   308,
-      -1,    -1,   311,    -1,    -1,   314,    -1,    -1,    -1,    -1,
-      -1,   320,    -1,    -1,    -1,    -1,    -1,   326,   327,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   338,
-      -1,    -1,    -1,    -1,    -1,    -1,   345,    -1,   347,    -1,
-      -1,    -1,    -1,   353,     0,     1,    -1,   357,    -1,    -1,
-      -1,   360,   361,   362,    -1,    -1,    12,    13,    14,    15,
+       0,     4,     0,    32,     7,     8,     9,    56,    46,    12,
+      13,    14,    15,    31,    36,   295,     1,    13,    21,    15,
+     310,    24,    97,   299,    77,    50,   316,    30,    31,    58,
+      33,    34,    35,    36,    37,    38,    58,    34,    76,   315,
+      43,    44,    45,    46,    54,    83,   326,   100,   101,    97,
+      53,   232,    55,    99,    57,    28,   104,    54,   104,    69,
+      64,   242,    47,    28,    13,    14,    69,    28,    74,    99,
+      73,    77,    54,    76,   104,    78,    94,    73,    81,    28,
+      83,    45,    78,    47,    87,    28,    89,    69,    94,    95,
+     108,    99,    99,    28,   100,   101,   104,   104,   101,    97,
+      99,    56,    57,    74,    28,   104,    77,    28,   203,   103,
+     104,   206,    27,    28,   286,   287,    28,    28,    98,    69,
+      91,    92,    93,    94,    95,   104,    98,   130,   128,   100,
+     101,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+     143,   144,   145,   146,   147,   148,   149,   150,   133,   152,
+     104,    45,    28,   156,    52,    28,   104,   104,    28,   104,
+      28,    28,   165,   167,    28,    28,   169,   170,   104,   172,
+     173,    32,   175,   176,   178,    54,   179,    32,    28,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,    36,
+     285,    28,    58,   196,    32,   104,    32,   201,    32,    28,
+      32,   332,   205,   298,   295,   128,   315,    31,   303,   304,
+     168,   306,    -1,    -1,   263,    -1,    65,    66,    -1,   257,
+      69,    70,   199,   200,    -1,    74,    -1,   322,    77,    78,
+      79,    -1,    -1,    -1,    -1,    -1,   239,    -1,    -1,    -1,
+     225,    -1,    91,    92,    93,    94,    95,    74,    -1,    -1,
+      77,   100,   101,    -1,   257,    -1,    -1,    -1,   353,   354,
+      -1,    -1,    -1,    -1,   313,    92,    93,    94,    95,   272,
+     273,   274,   275,   100,   101,   324,   279,   281,    -1,    -1,
+      -1,    -1,    -1,    -1,   269,    -1,   271,   264,    -1,   266,
+     293,    -1,    -1,    -1,   298,    -1,    -1,    -1,    -1,    -1,
+      -1,   350,    -1,   280,   308,    -1,    -1,    -1,    -1,   312,
+      -1,    -1,    -1,    -1,    -1,   318,    -1,   294,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   305,    -1,
+      -1,    -1,    -1,   310,   338,    -1,   340,   314,   315,    -1,
+     344,   345,    -1,    -1,    -1,    -1,   323,    -1,    -1,    -1,
+      -1,   328,   352,   353,    -1,    -1,    -1,    -1,   335,    -1,
+     337,    -1,   339,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   358,   359,   360,    12,    13,    14,    15,    -1,    17,
+      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
+      28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,
+      -1,    39,    40,    41,    -1,    -1,    44,    -1,    -1,    -1,
+      -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,
+      -1,    59,    60,    61,    62,    -1,    64,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
+      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    87,
+      88,    89,    90,    -1,    92,    93,    -1,    -1,    -1,    97,
+      98,    -1,    -1,    -1,   102,    12,    13,    14,    15,    -1,
+      17,    18,    19,    20,    21,    -1,    23,    24,    25,    -1,
+      27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
+      37,    -1,    39,    40,    41,    -1,    -1,    44,    -1,    -1,
+      -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,
+      -1,    -1,    59,    60,    61,    62,    -1,    64,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,
+      -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,
+      87,    88,    89,    90,    -1,    92,    93,    -1,    -1,    -1,
+      -1,    98,    -1,    -1,    -1,   102,    12,    13,    14,    15,
       -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
-      -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
-      -1,    37,    -1,    39,    40,    41,    -1,    -1,    44,    -1,
+      -1,    27,    28,    29,    -1,    31,    32,    33,    -1,    -1,
+      -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
-      -1,    -1,    -1,    59,    60,    61,    62,    -1,    64,    -1,
+      -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
       -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
-      -1,    87,    88,    89,    90,    -1,    92,    93,    -1,    -1,
+      -1,    87,    88,    -1,    90,    -1,    92,    93,    -1,    -1,
       -1,    97,    98,    -1,    -1,    -1,   102,    12,    13,    14,
       15,    -1,    17,    18,    19,    20,    21,    -1,    23,    24,
       25,    -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,
-      -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,    44,
+      -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,
-      55,    -1,    -1,    -1,    59,    60,    61,    62,    -1,    64,
+      55,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
       -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      -1,    -1,    87,    88,    89,    90,    -1,    92,    93,    -1,
-      -1,    -1,    -1,    98,    -1,    -1,    -1,   102,    12,    13,
+      -1,    -1,    87,    88,    -1,    90,    -1,    92,    93,    -1,
+      -1,    -1,    97,    98,    -1,    -1,    -1,   102,    12,    13,
       14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
-      24,    25,    -1,    27,    28,    29,    -1,    31,    32,    33,
+      24,    25,    -1,    27,    28,    29,    -1,    31,    -1,    33,
       -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
       -1,    55,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
       64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
       -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
       84,    -1,    -1,    87,    88,    -1,    90,    -1,    92,    93,
-      -1,    -1,    -1,    97,    98,    -1,    -1,    -1,   102,    12,
+      -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,   102,    12,
       13,    14,    15,    -1,    17,    18,    19,    20,    21,    -1,
-      23,    24,    25,    -1,    27,    28,    29,    -1,    31,    -1,
-      33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,
-      -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    61,    62,
-      -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
-      83,    84,    -1,    -1,    87,    88,    -1,    90,    -1,    92,
-      93,    -1,    -1,    -1,    97,    98,    -1,    -1,    -1,   102,
-      12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
-      -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
-      -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,
-      -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    61,
-      62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      82,    83,    84,    -1,    -1,    87,    88,    -1,    90,    -1,
-      92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,
-     102,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
-      21,    -1,    23,    24,    25,    -1,    27,    28,    29,    54,
-      31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,
-      65,    66,    -1,    -1,    69,    70,    71,    72,    49,    74,
-      51,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      61,    62,    -1,    64,    -1,    -1,    91,    92,    93,    94,
-      95,    -1,    73,    -1,    -1,   100,   101,    -1,    -1,    80,
-      81,    82,    83,    84,    -1,    -1,    -1,    88,    -1,    90,
-      -1,    92,    93,    12,    13,    14,    15,    98,    -1,    -1,
-      -1,   102,    -1,    -1,    23,    24,    25,    -1,    27,    28,
-      29,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,    38,
-      -1,    -1,    -1,    -1,    43,    -1,    45,    46,    47,    48,
+      23,    24,    25,    -1,    27,    28,    29,    54,    31,    -1,
+      33,    -1,    -1,    -1,    37,    -1,    39,    40,    65,    66,
+      -1,    -1,    69,    70,    71,    72,    49,    74,    51,    -1,
+      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    61,    62,
+      -1,    64,    -1,    -1,    91,    92,    93,    94,    95,    -1,
+      73,    -1,    -1,   100,   101,    -1,    -1,    80,    81,    82,
+      83,    84,    -1,    -1,    -1,    88,    -1,    90,    -1,    92,
+      93,    12,    13,    14,    15,    98,    -1,    -1,    -1,   102,
+      -1,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
+      31,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,
+      -1,    -1,    43,    -1,    45,    46,    47,    48,    49,    -1,
+      51,    12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
+      31,    -1,    73,    -1,    -1,    -1,    -1,    38,    -1,    80,
+      81,    82,    83,    84,    45,    -1,    47,    -1,    49,    -1,
+      51,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,
+      -1,   102,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,
+      81,    82,    83,    84,    -1,    -1,    -1,    12,    13,    14,
+      15,    92,    93,    -1,    -1,    -1,    -1,    98,    23,    24,
+      25,   102,    27,    28,    29,    -1,    31,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    49,    -1,    51,    12,    13,    14,
+      15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    24,
+      25,    -1,    27,    28,    29,    -1,    31,    -1,    73,    -1,
+      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
+      -1,    -1,    -1,    -1,    49,    -1,    51,    92,    93,    -1,
+      -1,    -1,    -1,    98,    -1,    -1,    -1,   102,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
+      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
+      -1,    -1,    -1,    12,    13,    14,    15,    92,    93,    -1,
+      -1,    -1,    -1,    98,    23,    24,    25,   102,    27,    28,
+      29,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       49,    -1,    51,    12,    13,    14,    15,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    23,    24,    25,    -1,    27,    28,
-      29,    -1,    31,    -1,    73,    -1,    -1,    -1,    -1,    38,
-      -1,    80,    81,    82,    83,    84,    45,    -1,    47,    -1,
+      29,    -1,    31,    -1,    73,    -1,    -1,    -1,    -1,    -1,
+      -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,
       49,    -1,    51,    92,    93,    -1,    -1,    -1,    -1,    98,
-      -1,    -1,    -1,   102,    63,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,
-      -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,    12,
-      13,    14,    15,    92,    93,    -1,    -1,    -1,    -1,    98,
-      23,    24,    25,   102,    27,    28,    29,    -1,    31,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,    51,    12,
-      13,    14,    15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      23,    24,    25,    -1,    27,    28,    29,    -1,    31,    -1,
-      73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
-      83,    84,    -1,    -1,    -1,    -1,    49,    -1,    51,    92,
-      93,    -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,   102,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
-      83,    84,    -1,    -1,    -1,    12,    13,    14,    15,    92,
-      93,    -1,    -1,    -1,    -1,    98,    23,    24,    25,   102,
-      27,    28,    29,    -1,    31,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    49,    -1,    51,    12,    13,    14,    15,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    23,    24,    25,    -1,
-      27,    28,    29,    -1,    31,    -1,    73,    -1,    -1,    -1,
-      -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,
-      -1,    -1,    49,    -1,    51,    92,    93,    -1,    -1,    -1,
-      -1,    98,    -1,    -1,    -1,   102,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    42,
-      -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
-      -1,    98,    65,    66,    -1,   102,    69,    70,    71,    72,
-      -1,    74,    75,    76,    77,    78,    79,    47,    -1,    -1,
-      -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    91,    92,
+      -1,    -1,    -1,   102,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    73,    -1,    -1,    42,    -1,    -1,
+      -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,
+      65,    66,    -1,   102,    69,    70,    71,    72,    -1,    74,
+      75,    76,    77,    78,    79,    47,    -1,    -1,    -1,    -1,
+      -1,    -1,    54,    -1,    -1,    -1,    91,    92,    93,    94,
+      95,    -1,    -1,    65,    66,   100,   101,    69,    70,    71,
+      72,    -1,    74,    -1,    -1,    77,    78,    79,    47,    -1,
+      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    91,
+      92,    93,    94,    95,    -1,    -1,    65,    66,   100,   101,
+      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
+      79,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,
+      -1,    -1,    91,    92,    93,    94,    95,    -1,    -1,    65,
+      66,   100,   101,    69,    70,    71,    72,    -1,    74,    -1,
+      -1,    77,    78,    79,    47,    -1,    -1,    -1,    -1,    -1,
+      -1,    54,    -1,    -1,    -1,    91,    92,    93,    94,    95,
+      -1,    -1,    65,    66,   100,   101,    69,    70,    71,    72,
+      -1,    74,    -1,    -1,    77,    78,    79,    47,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
       93,    94,    95,    -1,    -1,    65,    66,   100,   101,    69,
       70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
-      47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,
+      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    91,    92,    93,    94,    95,    -1,    -1,    65,    66,
      100,   101,    69,    70,    71,    72,    -1,    74,    -1,    -1,
       77,    78,    79,    47,    -1,    -1,    -1,    -1,    -1,    -1,
-      54,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
+      -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
       -1,    65,    66,   100,   101,    69,    70,    71,    72,    -1,
       74,    -1,    -1,    77,    78,    79,    47,    -1,    -1,    -1,
-      -1,    -1,    -1,    54,    -1,    -1,    -1,    91,    92,    93,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,
       94,    95,    -1,    -1,    65,    66,   100,   101,    69,    70,
-      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    47,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
+      -1,    -1,    -1,    -1,    52,    53,    -1,    -1,    -1,    -1,
       91,    92,    93,    94,    95,    -1,    -1,    65,    66,   100,
      101,    69,    70,    71,    72,    -1,    74,    -1,    -1,    77,
-      78,    79,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    52,    53,    -1,
       -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,    -1,
       65,    66,   100,   101,    69,    70,    71,    72,    -1,    74,
-      -1,    -1,    77,    78,    79,    47,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
+      -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
+      52,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
       95,    -1,    -1,    65,    66,   100,   101,    69,    70,    71,
-      72,    -1,    74,    -1,    -1,    77,    78,    79,    47,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,
+      72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    91,
       92,    93,    94,    95,    -1,    -1,    65,    66,   100,   101,
       69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,
-      -1,    -1,    91,    92,    93,    94,    95,    -1,    -1,    65,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      56,    -1,    91,    92,    93,    94,    95,    -1,    97,    65,
       66,   100,   101,    69,    70,    71,    72,    -1,    74,    -1,
       -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    56,    -1,    91,    92,    93,    94,    95,
-      -1,    97,    65,    66,   100,   101,    69,    70,    71,    72,
+      -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,
+      -1,    -1,    65,    66,   100,   101,    69,    70,    71,    72,
       -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
+      -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    91,    92,
       93,    94,    95,    -1,    -1,    65,    66,   100,   101,    69,
       70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
-      -1,    -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    -1,
-      -1,    91,    92,    93,    94,    95,    -1,    -1,    65,    66,
-     100,   101,    69,    70,    71,    72,    -1,    74,    -1,    -1,
-      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
-      -1,    -1,    99,   100,   101,    65,    66,    -1,    -1,    69,
-      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    91,    92,    93,    94,    95,    -1,    -1,    65,    66,
-     100,   101,    69,    70,    -1,    -1,    -1,    74,    -1,    -1,
-      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
-      -1,    -1,    -1,   100,   101
+      -1,    91,    92,    93,    94,    95,    -1,    -1,    -1,    99,
+     100,   101,    65,    66,    -1,    -1,    69,    70,    71,    72,
+      -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
+      93,    94,    95,    -1,    -1,    -1,    -1,   100,   101
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1298,39 +1309,39 @@ static const yytype_uint8 yystos[] =
       21,    23,    24,    25,    27,    28,    29,    31,    33,    37,
       39,    40,    41,    44,    49,    50,    51,    55,    59,    60,
       61,    62,    64,    73,    80,    81,    82,    83,    84,    87,
-      88,    89,    90,    92,    93,    98,   102,   106,   112,   113,
-     114,   115,   116,   124,   125,   126,   131,   132,   133,   134,
-     135,   139,   142,   144,   147,   151,    97,   107,    28,    49,
-     133,   133,   133,    98,   133,   153,    28,   133,    98,   153,
-     133,    98,   153,   143,    50,    28,   136,    38,    43,    45,
-      46,    47,    48,   133,   140,   141,    28,   133,    56,    57,
-      13,    14,    28,    28,    28,    28,   133,    63,   140,   141,
-      28,   138,   133,   133,   133,   133,   133,   133,    28,   137,
-      28,    98,   133,   133,   133,   133,   152,     0,   107,   122,
-     123,    69,   122,   114,   133,    65,    66,    69,    70,    71,
-      72,    74,    77,    78,    79,    91,    92,    93,    94,    95,
-     100,   101,   128,    98,   133,   133,   153,   104,   152,   153,
-     133,   152,   152,   104,   133,   133,    45,   141,   145,    42,
-      75,    76,    28,    54,    69,   133,    54,    69,    52,   111,
-     146,    56,   141,   104,    47,    54,    47,    54,    47,    54,
-      47,    54,    85,    86,   104,    28,    99,   103,   104,   112,
-     128,   130,   133,   133,    53,   108,   111,   129,    54,   107,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,    28,   148,    99,
-     133,    99,    99,    28,   133,   128,    28,   134,   133,   133,
-     133,   133,    54,   133,   133,   128,   133,    28,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,    28,    99,
-     104,   133,   107,   115,   129,   129,   130,   128,   133,   130,
-     104,   107,   148,   133,   148,    47,    47,    47,    47,   152,
-      32,    34,    54,   129,   114,   129,    28,   104,   150,   107,
-     107,   133,   133,   133,   133,    99,    54,   133,    32,    58,
-     109,   128,   129,    32,    28,   130,   150,   150,   133,   129,
-     128,   130,    36,   110,   118,   119,   120,   121,   127,   109,
-     119,   127,    32,   130,   130,   129,   130,   114,   129,   121,
-     129,   120,   122,   128,   129,   122,    28,   149,   130,   129,
-     129,    32,    32,   108,   111,   114,   109,   117,   111,   104,
-     129,    32,   128,   128,   129,   128,   129,   128,    28,    32,
-     130,   115,   130,   114,   129,   129,   129
+      88,    89,    90,    92,    93,    98,   102,   106,   111,   112,
+     113,   114,   115,   121,   122,   123,   128,   129,   130,   131,
+     132,   136,   139,   141,   144,   148,    97,   107,    28,    49,
+     130,   130,   130,    98,   130,   150,    28,   130,    98,   150,
+     130,    98,   150,   140,    50,    28,   133,    38,    43,    45,
+      46,    47,    48,   130,   137,   138,    28,   130,    56,    57,
+      13,    14,    28,    28,    28,    28,   130,    63,   137,   138,
+      28,   135,   130,   130,   130,   130,   130,   130,    28,   134,
+      28,    98,   130,   130,   130,   130,   149,     0,   107,   130,
+      69,   130,   113,   130,    65,    66,    69,    70,    71,    72,
+      74,    77,    78,    79,    91,    92,    93,    94,    95,   100,
+     101,   125,    98,   130,   130,   150,   104,   149,   150,   130,
+     149,   149,   104,   130,   130,    45,   138,   142,    42,    75,
+      76,    28,    54,    69,   130,    54,    69,    52,   143,    56,
+     138,   104,    47,    54,    47,    54,    47,    54,    47,    54,
+      85,    86,   104,    28,    99,   103,   104,   111,   125,   127,
+     130,    52,    53,   108,   126,    54,   107,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,    28,   145,    99,   130,    99,    99,
+      28,   130,   125,    28,   131,   130,   130,   130,   130,    54,
+     130,   130,   125,   130,    28,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   130,    28,    99,   104,   130,   107,
+     114,   126,   126,   125,   127,   130,   127,   104,   107,   145,
+     130,   145,    47,    47,    47,    47,   149,    32,    34,    54,
+     113,   126,   126,    28,   104,   147,   107,   107,   130,   130,
+     130,   130,    99,    54,   130,   126,    32,    58,   109,   125,
+      32,    28,   127,   147,   147,   130,   126,    36,   109,   110,
+     118,   119,   124,   125,   127,   117,   118,   120,   124,    32,
+     127,   127,   126,   127,   125,   119,   126,   130,   113,   126,
+     120,   126,   130,    28,   146,   127,   126,   113,   109,   116,
+      52,   126,    32,    32,    52,   108,   104,   126,    32,   126,
+     125,   126,   125,   125,   125,    28,    32,   113,   114,   127,
+     127,   126,   126,   126
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2153,45 +2164,32 @@ yyreduce:
 #line 125 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
-		g_lingo->_colnumber = 1;
-
-		g_lingo->_inCond = false; ;}
+		g_lingo->_colnumber = 1; ;}
     break;
 
   case 6:
-#line 132 "engines/director/lingo/lingo-gr.y"
+#line 130 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
-		g_lingo->_colnumber = 1;
-
-		g_lingo->_inCond = false; ;}
+		g_lingo->_colnumber = 1; ;}
     break;
 
   case 7:
-#line 139 "engines/director/lingo/lingo-gr.y"
+#line 135 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
-		g_lingo->_colnumber = 5;
-
-		g_lingo->_inCond = false; ;}
+		g_lingo->_colnumber = 5; ;}
     break;
 
   case 8:
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 140 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
-		g_lingo->_colnumber = 8;
-
-		g_lingo->_inCond = false; 	;}
+		g_lingo->_colnumber = 8; ;}
     break;
 
-  case 9:
-#line 153 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->_inCond = false; ;}
-    break;
-
-  case 13:
-#line 161 "engines/director/lingo/lingo-gr.y"
+  case 12:
+#line 150 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str());
@@ -2200,25 +2198,25 @@ yyreduce:
 		delete (yyvsp[(4) - (4)].s); ;}
     break;
 
-  case 14:
-#line 167 "engines/director/lingo/lingo-gr.y"
+  case 13:
+#line 156 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_assign);
 			(yyval.code) = (yyvsp[(2) - (4)].code); ;}
     break;
 
-  case 15:
-#line 170 "engines/director/lingo/lingo-gr.y"
+  case 14:
+#line 159 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_after); ;}
     break;
 
-  case 16:
-#line 171 "engines/director/lingo/lingo-gr.y"
+  case 15:
+#line 160 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_before); ;}
     break;
 
-  case 17:
-#line 172 "engines/director/lingo/lingo-gr.y"
+  case 16:
+#line 161 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2227,8 +2225,8 @@ yyreduce:
 		delete (yyvsp[(2) - (4)].s); ;}
     break;
 
-  case 18:
-#line 178 "engines/director/lingo/lingo-gr.y"
+  case 17:
+#line 167 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2238,8 +2236,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(4) - (4)].code); ;}
     break;
 
-  case 19:
-#line 185 "engines/director/lingo/lingo-gr.y"
+  case 18:
+#line 174 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2248,8 +2246,8 @@ yyreduce:
 		delete (yyvsp[(2) - (4)].s); ;}
     break;
 
-  case 20:
-#line 191 "engines/director/lingo/lingo-gr.y"
+  case 19:
+#line 180 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2259,8 +2257,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(4) - (4)].code); ;}
     break;
 
-  case 21:
-#line 198 "engines/director/lingo/lingo-gr.y"
+  case 20:
+#line 187 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2269,8 +2267,8 @@ yyreduce:
 		(yyval.code) = (yyvsp[(5) - (5)].code); ;}
     break;
 
-  case 27:
-#line 217 "engines/director/lingo/lingo-gr.y"
+  case 26:
+#line 206 "engines/director/lingo/lingo-gr.y"
     {
 		inst body = 0, end = 0;
 		WRITE_UINT32(&body, (yyvsp[(3) - (5)].code) - (yyvsp[(1) - (5)].code));
@@ -2281,8 +2279,8 @@ yyreduce:
 		checkEnd((yyvsp[(5) - (5)].s), "repeat", true); ;}
     break;
 
-  case 28:
-#line 230 "engines/director/lingo/lingo-gr.y"
+  case 27:
+#line 219 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2299,8 +2297,8 @@ yyreduce:
 		checkEnd((yyvsp[(10) - (10)].s), "repeat", true); ;}
     break;
 
-  case 29:
-#line 248 "engines/director/lingo/lingo-gr.y"
+  case 28:
+#line 237 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (11)].code) - (yyvsp[(1) - (11)].code));
@@ -2317,8 +2315,8 @@ yyreduce:
 		checkEnd((yyvsp[(11) - (11)].s), "repeat", true); ;}
     break;
 
-  case 30:
-#line 262 "engines/director/lingo/lingo-gr.y"
+  case 29:
+#line 251 "engines/director/lingo/lingo-gr.y"
     {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[(3) - (3)].code) - (yyvsp[(1) - (3)].code));
@@ -2326,22 +2324,22 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[(1) - (3)].code) + 1] = end; ;}
     break;
 
-  case 31:
-#line 267 "engines/director/lingo/lingo-gr.y"
+  case 30:
+#line 256 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 			checkEnd((yyvsp[(6) - (6)].s), "tell", true); ;}
     break;
 
-  case 32:
-#line 270 "engines/director/lingo/lingo-gr.y"
+  case 31:
+#line 259 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 		;}
     break;
 
-  case 33:
-#line 275 "engines/director/lingo/lingo-gr.y"
+  case 32:
+#line 264 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2354,8 +2352,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 34:
-#line 285 "engines/director/lingo/lingo-gr.y"
+  case 33:
+#line 274 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2370,8 +2368,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 35:
-#line 297 "engines/director/lingo/lingo-gr.y"
+  case 34:
+#line 286 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2386,8 +2384,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(8) - (9)].code) - (yyvsp[(1) - (9)].code)); ;}
     break;
 
-  case 36:
-#line 309 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 298 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2400,8 +2398,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(9) - (9)].code) - (yyvsp[(1) - (9)].code)); ;}
     break;
 
-  case 37:
-#line 319 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 308 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2414,8 +2412,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(10) - (10)].code) - (yyvsp[(1) - (10)].code)); ;}
     break;
 
-  case 38:
-#line 329 "engines/director/lingo/lingo-gr.y"
+  case 37:
+#line 318 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2428,8 +2426,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 39:
-#line 339 "engines/director/lingo/lingo-gr.y"
+  case 38:
+#line 328 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2442,18 +2440,18 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 40:
-#line 351 "engines/director/lingo/lingo-gr.y"
+  case 39:
+#line 340 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = 0; ;}
     break;
 
-  case 41:
-#line 352 "engines/director/lingo/lingo-gr.y"
+  case 40:
+#line 341 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 46:
-#line 363 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 352 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2462,8 +2460,8 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 48:
-#line 372 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 361 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2472,8 +2470,8 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 49:
-#line 378 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 367 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2482,23 +2480,13 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 50:
-#line 386 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(STOP); ;}
-    break;
-
-  case 51:
-#line 389 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->_inCond = true; ;}
-    break;
-
-  case 52:
-#line 392 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 375 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
-  case 53:
-#line 395 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 378 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2506,8 +2494,8 @@ yyreduce:
 		delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 54:
-#line 402 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 385 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2515,8 +2503,8 @@ yyreduce:
 		g_lingo->codeLabel(0); ;}
     break;
 
-  case 55:
-#line 409 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 392 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2525,23 +2513,23 @@ yyreduce:
 		g_lingo->code1(skipEnd); ;}
     break;
 
-  case 56:
-#line 417 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 400 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 57:
-#line 420 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 403 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 58:
-#line 423 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 406 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 61:
-#line 428 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 411 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
@@ -2549,82 +2537,82 @@ yyreduce:
 		delete (yyvsp[(2) - (3)].s); ;}
     break;
 
-  case 62:
-#line 434 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 417 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_tellcode);
 		g_lingo->code1(STOP); ;}
     break;
 
-  case 63:
-#line 438 "engines/director/lingo/lingo-gr.y"
+  case 60:
+#line 421 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt((yyvsp[(1) - (1)].i)); ;}
     break;
 
-  case 64:
-#line 441 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 424 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_floatpush);
 		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
-  case 65:
-#line 444 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 427 "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 66:
-#line 447 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 430 "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 68:
-#line 451 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 434 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 69:
-#line 454 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 437 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 70:
-#line 457 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 440 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 71:
-#line 458 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 441 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
-  case 72:
-#line 459 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 442 "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 73:
-#line 462 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 445 "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 74:
-#line 466 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 449 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2635,8 +2623,8 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 75:
-#line 474 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 457 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
@@ -2645,395 +2633,395 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 77:
-#line 481 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 464 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_add); ;}
     break;
 
-  case 78:
-#line 482 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 465 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_sub); ;}
     break;
 
-  case 79:
-#line 483 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 466 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
-  case 80:
-#line 484 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 467 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
-  case 81:
-#line 485 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 468 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
-  case 82:
-#line 486 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 469 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
-  case 83:
-#line 487 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 470 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
-  case 84:
-#line 488 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 471 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_eq); ;}
     break;
 
-  case 85:
-#line 489 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 472 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
-  case 86:
-#line 490 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 473 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
-  case 87:
-#line 491 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 474 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
-  case 88:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 475 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
-  case 89:
-#line 493 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 476 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
-  case 90:
-#line 494 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 477 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
-  case 91:
-#line 495 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 478 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
-  case 92:
-#line 496 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 479 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
-  case 93:
-#line 497 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 480 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
-  case 94:
-#line 498 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 481 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
-  case 95:
-#line 499 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 482 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
-  case 96:
-#line 500 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 483 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
-  case 97:
-#line 501 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 484 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 98:
-#line 502 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 485 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_arraypush); g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
-  case 99:
-#line 503 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 486 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
-  case 100:
-#line 504 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 487 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
-  case 101:
-#line 505 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 488 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
-  case 102:
-#line 506 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 489 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
-  case 103:
-#line 507 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 490 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
-  case 104:
-#line 508 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 491 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
-  case 105:
-#line 509 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 492 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
-  case 106:
-#line 510 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 493 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
-  case 107:
-#line 511 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 494 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
-  case 108:
-#line 512 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 495 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
-  case 109:
-#line 515 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 498 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 110:
-#line 520 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 503 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
-  case 113:
-#line 523 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 506 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
-  case 114:
-#line 524 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 507 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
-  case 118:
-#line 528 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 511 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 119:
-#line 531 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 514 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 120:
-#line 534 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 517 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 121:
-#line 537 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 520 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_voidpush);
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 1);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 122:
-#line 541 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 524 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 123:
-#line 542 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 525 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
-  case 124:
-#line 543 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 526 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
-  case 125:
-#line 544 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 527 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
-  case 126:
-#line 545 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 528 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
-  case 127:
-#line 546 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 529 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
-  case 128:
-#line 547 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 530 "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 129:
-#line 550 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 533 "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 130:
-#line 551 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 534 "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 131:
-#line 554 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 537 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 132:
-#line 555 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 538 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 133:
-#line 558 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 541 "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 134:
-#line 559 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 542 "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 135:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 553 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
-  case 136:
-#line 571 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 554 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
-  case 137:
-#line 572 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 555 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
-  case 138:
-#line 573 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 556 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 139:
-#line 577 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 560 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 140:
-#line 581 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 564 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 145:
-#line 595 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 578 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
-  case 146:
-#line 596 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 579 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 147:
-#line 600 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 583 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 148:
-#line 604 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 587 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 149:
-#line 608 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 591 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
-  case 150:
-#line 608 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 591 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 151:
-#line 638 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 621 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 152:
-#line 639 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 622 "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));
 			g_lingo->_indef = false; ;}
     break;
 
-  case 153:
-#line 643 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 626 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFactory(*(yyvsp[(2) - (2)].s)); ;}
     break;
 
-  case 154:
-#line 644 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 627 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
-  case 155:
-#line 645 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 628 "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 156:
-#line 649 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 632 "engines/director/lingo/lingo-gr.y"
     {	// D3
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*(yyvsp[(1) - (8)].s), (yyvsp[(2) - (8)].code), (yyvsp[(3) - (8)].narg));
@@ -3043,8 +3031,8 @@ yyreduce:
 		checkEnd((yyvsp[(7) - (8)].s), (yyvsp[(1) - (8)].s)->c_str(), false); ;}
     break;
 
-  case 157:
-#line 656 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 639 "engines/director/lingo/lingo-gr.y"
     {	// D4. No 'end' clause
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*(yyvsp[(1) - (6)].s), (yyvsp[(2) - (6)].code), (yyvsp[(3) - (6)].narg));
@@ -3052,38 +3040,38 @@ yyreduce:
 		g_lingo->_ignoreMe = false; ;}
     break;
 
-  case 158:
-#line 662 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 645 "engines/director/lingo/lingo-gr.y"
     { (yyval.s) = (yyvsp[(2) - (2)].s); g_lingo->_indef = true; g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; ;}
     break;
 
-  case 159:
-#line 664 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 647 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 160:
-#line 665 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 648 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
-  case 161:
-#line 666 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 649 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 162:
-#line 667 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 650 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 166:
-#line 675 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 658 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
-  case 167:
-#line 679 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 662 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -3092,34 +3080,34 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 168:
-#line 687 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 670 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 169:
-#line 688 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 671 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 170:
-#line 689 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 672 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 171:
-#line 692 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 675 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 172:
-#line 693 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 676 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3123 "engines/director/lingo/lingo-gr.cpp"
+#line 3111 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3333,6 +3321,6 @@ yyreturn:
 }
 
 
-#line 696 "engines/director/lingo/lingo-gr.y"
+#line 679 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 892a24c..1703cfb 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -124,33 +124,22 @@ program: program nl programline
 
 nl:	'\n' {
 		g_lingo->_linenumber++;
-		g_lingo->_colnumber = 1;
-
-		g_lingo->_inCond = false; }
+		g_lingo->_colnumber = 1; }
 	;
 
 thennl:	tTHENNL {
 		g_lingo->_linenumber++;
-		g_lingo->_colnumber = 1;
-
-		g_lingo->_inCond = false; }
+		g_lingo->_colnumber = 1; }
 	;
 
 nlelse:	tNLELSE {
 		g_lingo->_linenumber++;
-		g_lingo->_colnumber = 5;
-
-		g_lingo->_inCond = false; }
+		g_lingo->_colnumber = 5; }
 	;
 
 nlelsif: tNLELSIF {
 		g_lingo->_linenumber++;
-		g_lingo->_colnumber = 8;
-
-		g_lingo->_inCond = false; 	}
-	;
-
-then: tTHEN { g_lingo->_inCond = false; }
+		g_lingo->_colnumber = 8; }
 	;
 
 programline: /* empty */
@@ -214,7 +203,7 @@ stmt: stmtoneliner
 	//   statements
 	// end repeat
 	//
-	| repeatwhile cond stmtlist end ENDCLAUSE	{
+	| repeatwhile expr stmtlist end ENDCLAUSE	{
 		inst body = 0, end = 0;
 		WRITE_UINT32(&body, $3 - $1);
 		WRITE_UINT32(&end, $4 - $1);
@@ -272,7 +261,7 @@ stmt: stmtoneliner
 		}
 	;
 
-ifstmt:	if cond thennl stmtlist end ENDCLAUSE		{
+ifstmt:	if expr thennl stmtlist end ENDCLAUSE		{
 		inst then = 0, end = 0;
 		WRITE_UINT32(&then, $4 - $1);
 		WRITE_UINT32(&end, $5 - $1);
@@ -282,7 +271,7 @@ ifstmt:	if cond thennl stmtlist end ENDCLAUSE		{
 		checkEnd($6, "if", true);
 
 		g_lingo->processIf(0, 0); }
-	| if cond thennl stmtlist end nlelse stmtlist end ENDCLAUSE {
+	| if expr thennl stmtlist end nlelse stmtlist end ENDCLAUSE {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, $4 - $1);
 		WRITE_UINT32(&else1, $7 - $1);
@@ -294,7 +283,7 @@ ifstmt:	if cond thennl stmtlist end ENDCLAUSE		{
 		checkEnd($9, "if", true);
 
 		g_lingo->processIf(0, 0); }
-	| if cond thennl stmtlist end begin elseifstmt end ENDCLAUSE {
+	| if expr thennl stmtlist end begin elseifstmt end ENDCLAUSE {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, $4 - $1);
 		WRITE_UINT32(&else1, $6 - $1);
@@ -306,7 +295,7 @@ ifstmt:	if cond thennl stmtlist end ENDCLAUSE		{
 		checkEnd($9, "if", true);
 
 		g_lingo->processIf(0, $8 - $1); }
-	| if cond thennl stmtlist end nlelse begin stmtoneliner end {
+	| if expr thennl stmtlist end nlelse begin stmtoneliner end {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, $4 - $1);
 		WRITE_UINT32(&else1, $7 - $1);
@@ -316,7 +305,7 @@ ifstmt:	if cond thennl stmtlist end ENDCLAUSE		{
 		(*g_lingo->_currentScript)[$1 + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf(0, $9 - $1); }
-	| if cond then begin stmtoneliner end elseifstmtoneliner end elsestmtoneliner end {
+	| if expr tTHEN begin stmtoneliner end elseifstmtoneliner end elsestmtoneliner end {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, $4 - $1);
 		WRITE_UINT32(&else1, $6 - $1);
@@ -326,7 +315,7 @@ ifstmt:	if cond thennl stmtlist end ENDCLAUSE		{
 		(*g_lingo->_currentScript)[$1 + 3] = end; 	/* end, if cond fails */
 
 		g_lingo->processIf(0, $10 - $1); }
-	| if cond then begin stmtoneliner end nlelse begin stmtoneliner end {
+	| if expr tTHEN begin stmtoneliner end nlelse begin stmtoneliner end {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, $4 - $1);
 		WRITE_UINT32(&else1, $8 - $1);
@@ -336,7 +325,7 @@ ifstmt:	if cond thennl stmtlist end ENDCLAUSE		{
 		(*g_lingo->_currentScript)[$1 + 3] = end; 	/* end, if cond fails */
 
 		g_lingo->processIf(0, 0); }
-	| if cond then begin stmtoneliner end {
+	| if expr tTHEN begin stmtoneliner end {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, $4 - $1);
 		WRITE_UINT32(&else1, 0);
@@ -360,7 +349,7 @@ elseifstmtoneliner: elseifstmtoneliner elseifstmtoneliner1
 	| elseifstmtoneliner1
 	;
 
-elseifstmtoneliner1:	elseif cond then begin stmt end {
+elseifstmtoneliner1:	elseif expr tTHEN begin stmt end {
 		inst then = 0;
 		WRITE_UINT32(&then, $4 - $1);
 		(*g_lingo->_currentScript)[$1 + 1] = then;	/* thenpart */
@@ -369,13 +358,13 @@ elseifstmtoneliner1:	elseif cond then begin stmt end {
 	;
 
 elseifstmt1: elseifstmtoneliner
-	| elseif cond then begin stmtlist end {
+	| elseif expr tTHEN begin stmtlist end {
 		inst then = 0;
 		WRITE_UINT32(&then, $5 - $1);
 		(*g_lingo->_currentScript)[$1 + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel($1); }
-	| elseif cond thennl begin stmtlist end {
+	| elseif expr thennl begin stmtlist end {
 		inst then = 0;
 		WRITE_UINT32(&then, $5 - $1);
 		(*g_lingo->_currentScript)[$1 + 1] = then;	/* thenpart */
@@ -383,12 +372,6 @@ elseifstmt1: elseifstmtoneliner
 		g_lingo->codeLabel($1); }
 	;
 
-cond:	begincond expr	{ g_lingo->code1(STOP); }
-	;
-
-begincond:	  /* nothing */		{ g_lingo->_inCond = true; }
-	;
-
 repeatwhile:	tREPEAT tWHILE		{ $$ = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); }
 	;
 
@@ -425,7 +408,7 @@ stmtlist: begin				{ $$ = g_lingo->_currentScript->size(); }
 	| stmtlist stmt
 	;
 
-when:	  tWHEN	ID then	{
+when:	  tWHEN	ID tTHEN	{
 		$$ = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
 		g_lingo->codeString($2->c_str());


Commit: 6706410a53e7fa64e789e5f9772de7c99d5afb89
    https://github.com/scummvm/scummvm/commit/6706410a53e7fa64e789e5f9772de7c99d5afb89
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-02T21:29:39+01:00

Commit Message:
DIRECTOR: LINGO: Added test for inline equality tests

Changed paths:
    engines/director/lingo/tests/the.lingo


diff --git a/engines/director/lingo/tests/the.lingo b/engines/director/lingo/tests/the.lingo
index 28388d9..8110c9d 100644
--- a/engines/director/lingo/tests/the.lingo
+++ b/engines/director/lingo/tests/the.lingo
@@ -10,4 +10,7 @@ put the long date
 put the abbreviated time
 put the short time
 
+set a = 5
+
 set gravityConst = the value of ( the text of cast A14)
+set the hilite of cast A32 to (a = 3)


Commit: 2cc1c337c88e8af61e10df50f3dc2fd4524f4fb5
    https://github.com/scummvm/scummvm/commit/2cc1c337c88e8af61e10df50f3dc2fd4524f4fb5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-02T21:37:17+01:00

Commit Message:
DIRECTOR: LINGO: JANITORIAL: Whitespace fixes

Changed paths:
    engines/director/lingo/lingo-lex.cpp
    engines/director/lingo/lingo-lex.l


diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index c35eafe..2c1802c 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -2586,5 +2586,5 @@ int Lingo::parse(const char *code) {
 	return 0;
 }
 
-}
+} // End of namespace Director
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index d01849d..2d69834 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -80,21 +80,21 @@ whitespace [\t ]
 \xC2[\r\n]	{ g_lingo->_linenumber++; g_lingo->_colnumber = 0; }
 --[^\r\n]*
 ^{whitespace}+	{ count(); }
-[\t]+						{ count(); return ' '; }
+[\t]+			{ count(); return ' '; }
 
 [#]{identifier}	{ count(); yylval.s = new Common::String(yytext); return SYMBOL; }	// D3
 
-(?i:after)			{ count(); return tAFTER; }		// D3
-(?i:and)				{ count(); return tAND; }
-(?i:before)			{ count(); return tBEFORE; }	// D3
-(?i:char)				{ count(); return tCHAR; }		// D3
-(?i:contains)		{ count(); return tCONTAINS; }
-(?i:done)				{ count(); return tDONE; }
-(?i:down)				{ count(); return tDOWN; }
-(?i:if)					{ count(); return tIF; }
+(?i:after)		{ count(); return tAFTER; }		// D3
+(?i:and)		{ count(); return tAND; }
+(?i:before)		{ count(); return tBEFORE; }	// D3
+(?i:char)		{ count(); return tCHAR; }		// D3
+(?i:contains)	{ count(); return tCONTAINS; }
+(?i:done)		{ count(); return tDONE; }
+(?i:down)		{ count(); return tDOWN; }
+(?i:if)			{ count(); return tIF; }
 (?i:[\n\r]+[\t ]*else[\t ]+if)	{ countnl(); return tNLELSIF; }
 (?i:[\n\r]+[\t ]*else)	{ countnl(); return tNLELSE; }
-(?i:else)				{ count(); return tELSE; }
+(?i:else)		{ count(); return tELSE; }
 (?i:end)([\t ]*{identifier})?	{
 		count();
 
@@ -106,37 +106,37 @@ whitespace [\t ]
 
 		return ENDCLAUSE;
 	}
-(?i:factory)		{ count(); return tFACTORY; }
-(?i:exit)				{ count(); return tEXIT; }
-(?i:frame)			{ count(); return tFRAME; }
-(?i:global)			{ count(); return tGLOBAL; }
+(?i:factory)	{ count(); return tFACTORY; }
+(?i:exit)		{ count(); return tEXIT; }
+(?i:frame)		{ count(); return tFRAME; }
+(?i:global)		{ count(); return tGLOBAL; }
 (?i:go[\t ]+to)	{ count(); return tGO; }
-(?i:go)					{ count(); return tGO; }
-(?i:instance)		{ count(); return tINSTANCE; }
+(?i:go)			{ count(); return tGO; }
+(?i:instance)	{ count(); return tINSTANCE; }
 (?i:intersects)	{ count(); return tINTERSECTS; }
-(?i:into)				{ count(); return tINTO; }
-(?i:item)				{ count(); return tITEM; }
-(?i:line)				{ count(); return tLINE; }
-(?i:loop)				{ count(); return checkImmediate(tLOOP); }
-(?i:macro)			{ count(); return tMACRO; }
-(?i:method)			{ count(); return tMETHOD; }
-(?i:mod)				{ count(); return tMOD; }
-(?i:movie)			{ count(); return tMOVIE; }
-(?i:next)				{ count(); return tNEXT; }
-(?i:not)				{ count(); return tNOT; }
-(?i:of)					{ count(); return tOF; }
-(?i:on)					{ count(); return tON; }		// D3
-(?i:open)				{ count(); return tOPEN; }
-(?i:or)					{ count(); return tOR; }
-(?i:play)				{ count(); return tPLAY; }
+(?i:into)		{ count(); return tINTO; }
+(?i:item)		{ count(); return tITEM; }
+(?i:line)		{ count(); return tLINE; }
+(?i:loop)		{ count(); return checkImmediate(tLOOP); }
+(?i:macro)		{ count(); return tMACRO; }
+(?i:method)		{ count(); return tMETHOD; }
+(?i:mod)		{ count(); return tMOD; }
+(?i:movie)		{ count(); return tMOVIE; }
+(?i:next)		{ count(); return tNEXT; }
+(?i:not)		{ count(); return tNOT; }
+(?i:of)			{ count(); return tOF; }
+(?i:on)			{ count(); return tON; }		// D3
+(?i:open)		{ count(); return tOPEN; }
+(?i:or)			{ count(); return tOR; }
+(?i:play)		{ count(); return tPLAY; }
 (?i:playAccel)	{ count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
-(?i:previous)		{ count(); return tPREVIOUS; }
-(?i:property)		{ count(); return tPROPERTY; }	// D4
-(?i:put)				{ count(); return tPUT; }
-(?i:repeat)			{ count(); return checkImmediate(tREPEAT); }
-(?i:set)				{ count(); return tSET; }
-(?i:starts)			{ count(); return tSTARTS; }
-(?i:tell)				{ count(); return tTELL; }
+(?i:previous)	{ count(); return tPREVIOUS; }
+(?i:property)	{ count(); return tPROPERTY; }	// D4
+(?i:put)		{ count(); return tPUT; }
+(?i:repeat)		{ count(); return checkImmediate(tREPEAT); }
+(?i:set)		{ count(); return tSET; }
+(?i:starts)		{ count(); return tSTARTS; }
+(?i:tell)		{ count(); return tTELL; }
 (?i:the[ \t]+last[\t ]+of[\t ]+)	{
 		count();
 
@@ -250,21 +250,21 @@ whitespace [\t ]
 
 		warning("Unhandled the entity %s", ptr);
 	}
-(?i:then)				{ count(); return tTHEN; }
-(?i:then[\n\r]+)		{ count(); return tTHENNL; }
-(?i:to)					{ count(); return tTO; }
-(?i:sprite)				{ count(); return tSPRITE; }
-(?i:with)				{ count(); return tWITH; }
-(?i:within)				{ count(); return tWITHIN; }
-(?i:when)				{ count(); return tWHEN; }
-(?i:while)				{ count(); return tWHILE; }
-(?i:word)				{ count(); return tWORD; }
-
-[<][>]					{ count(); return tNEQ; }
-[>][=]					{ count(); return tGE; }
-[<][=]					{ count(); return tLE; }
-[&][&]					{ count(); return tCONCAT; }
-[=]						{ count(); return tEQ; }
+(?i:then)			{ count(); return tTHEN; }
+(?i:then[\n\r]+)	{ count(); return tTHENNL; }
+(?i:to)				{ count(); return tTO; }
+(?i:sprite)			{ count(); return tSPRITE; }
+(?i:with)			{ count(); return tWITH; }
+(?i:within)			{ count(); return tWITHIN; }
+(?i:when)			{ count(); return tWHEN; }
+(?i:while)			{ count(); return tWHILE; }
+(?i:word)			{ count(); return tWORD; }
+
+[<][>]				{ count(); return tNEQ; }
+[>][=]				{ count(); return tGE; }
+[<][=]				{ count(); return tLE; }
+[&][&]				{ count(); return tCONCAT; }
+[=]					{ count(); return tEQ; }
 
 {identifier}		{
 		count();
@@ -311,11 +311,11 @@ whitespace [\t ]
 
 		return ID;
 	}
-{constfloat}		{ count(); yylval.f = atof(yytext); return FLOAT; }
+{constfloat}	{ count(); yylval.f = atof(yytext); return FLOAT; }
 {constinteger}	{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
-{operator}			{ count(); return *yytext; }
-{newline}				{ return '\n'; }
-{conststring}		{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
+{operator}		{ count(); return *yytext; }
+{newline}		{ return '\n'; }
+{conststring}	{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 .				{ count(); }
 
 %%
@@ -342,4 +342,4 @@ int Lingo::parse(const char *code) {
 	return 0;
 }
 
-}
+} // End of namespace Director


Commit: c8d37abd9a8d82447a04b0ccbe754cf97df553b1
    https://github.com/scummvm/scummvm/commit/c8d37abd9a8d82447a04b0ccbe754cf97df553b1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-02T21:57:22+01:00

Commit Message:
DIRECTOR: LINGO: Fix setting cast member values

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 119043f..a74e1a0 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -538,18 +538,18 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  127
+#define YYFINAL  128
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1848
+#define YYLAST   1857
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  105
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  46
+#define YYNNTS  47
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  169
+#define YYNRULES  171
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  364
+#define YYNSTATES  368
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -605,21 +605,22 @@ static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     7,     9,    12,    14,    16,    18,    20,
       21,    23,    25,    30,    35,    40,    45,    50,    55,    60,
-      65,    71,    73,    75,    77,    79,    81,    87,    98,   110,
-     114,   121,   126,   133,   143,   153,   163,   174,   185,   192,
-     193,   197,   200,   202,   205,   207,   214,   216,   223,   230,
-     233,   237,   239,   241,   242,   243,   245,   248,   251,   255,
-     257,   259,   261,   263,   265,   267,   269,   272,   275,   280,
-     285,   287,   289,   292,   294,   298,   302,   306,   310,   314,
-     318,   322,   326,   330,   334,   338,   342,   346,   349,   353,
-     357,   361,   365,   368,   371,   375,   379,   384,   389,   394,
-     401,   406,   413,   418,   425,   430,   437,   440,   443,   445,
-     447,   450,   452,   455,   458,   461,   463,   466,   469,   471,
-     474,   479,   484,   491,   496,   499,   503,   505,   509,   511,
-     515,   517,   521,   524,   527,   530,   533,   537,   540,   543,
-     545,   549,   552,   555,   558,   562,   565,   566,   570,   571,
-     580,   583,   584,   593,   602,   609,   612,   613,   615,   619,
-     624,   625,   627,   631,   632,   635,   636,   638,   642,   644
+      65,    71,    77,    79,    81,    83,    85,    87,    93,   104,
+     116,   120,   127,   132,   139,   149,   159,   169,   180,   191,
+     198,   199,   203,   206,   208,   211,   213,   220,   222,   229,
+     236,   239,   243,   245,   247,   248,   249,   251,   254,   257,
+     261,   263,   265,   267,   269,   271,   273,   275,   277,   279,
+     282,   285,   290,   295,   297,   300,   302,   306,   310,   314,
+     318,   322,   326,   330,   334,   338,   342,   346,   350,   354,
+     357,   361,   365,   369,   373,   376,   379,   383,   387,   392,
+     397,   402,   409,   414,   421,   426,   433,   438,   445,   448,
+     451,   453,   455,   458,   460,   463,   466,   469,   471,   474,
+     477,   479,   482,   487,   492,   499,   504,   507,   511,   513,
+     517,   519,   523,   525,   529,   532,   535,   538,   541,   545,
+     548,   551,   553,   557,   560,   563,   566,   570,   573,   574,
+     578,   579,   588,   591,   592,   601,   610,   617,   620,   621,
+     623,   627,   632,   633,   635,   639,   640,   643,   644,   646,
+     650,   652
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -627,69 +628,70 @@ static const yytype_int16 yyrhs[] =
 {
      106,     0,    -1,   106,   107,   111,    -1,   111,    -1,     1,
      107,    -1,    97,    -1,    53,    -1,    58,    -1,    36,    -1,
-      -1,   141,    -1,   114,    -1,    49,   130,    42,    28,    -1,
-      49,   130,    42,   131,    -1,    49,   130,    75,   130,    -1,
-      49,   130,    76,   130,    -1,    51,    28,    69,   130,    -1,
-      51,    13,    69,   130,    -1,    51,    28,    54,   130,    -1,
-      51,    13,    54,   130,    -1,    51,    14,   130,    54,   130,
-      -1,   148,    -1,   130,    -1,   132,    -1,   113,    -1,   115,
-      -1,   121,   130,   127,   126,    32,    -1,   122,    69,   130,
-     126,    54,   130,   126,   127,   126,    32,    -1,   122,    69,
-     130,   126,    34,    54,   130,   126,   127,   126,    32,    -1,
-     128,   113,   126,    -1,   129,   130,   107,   127,   126,    32,
-      -1,   129,   130,    54,   130,    -1,   123,   130,   108,   127,
-     126,    32,    -1,   123,   130,   108,   127,   126,   109,   127,
-     126,    32,    -1,   123,   130,   108,   127,   126,   125,   117,
-     126,    32,    -1,   123,   130,   108,   127,   126,   109,   125,
-     113,   126,    -1,   123,   130,    52,   125,   113,   126,   118,
-     126,   116,   126,    -1,   123,   130,    52,   125,   113,   126,
-     109,   125,   113,   126,    -1,   123,   130,    52,   125,   113,
-     126,    -1,    -1,   109,   125,   113,    -1,   117,   120,    -1,
-     120,    -1,   118,   119,    -1,   119,    -1,   124,   130,    52,
-     125,   114,   126,    -1,   118,    -1,   124,   130,    52,   125,
-     127,   126,    -1,   124,   130,   108,   125,   127,   126,    -1,
-      50,    57,    -1,    50,    56,    28,    -1,    41,    -1,   110,
-      -1,    -1,    -1,   125,    -1,   127,   107,    -1,   127,   114,
-      -1,    55,    28,    52,    -1,    87,    -1,    12,    -1,    15,
-      -1,    31,    -1,    29,    -1,   131,    -1,    23,    -1,    24,
-     130,    -1,    25,   150,    -1,    25,    98,   150,    99,    -1,
-      28,    98,   149,    99,    -1,    28,    -1,    13,    -1,    14,
-     130,    -1,   112,    -1,   130,    92,   130,    -1,   130,    93,
-     130,    -1,   130,    94,   130,    -1,   130,    95,   130,    -1,
-     130,    74,   130,    -1,   130,   100,   130,    -1,   130,   101,
-     130,    -1,   130,    69,   130,    -1,   130,    70,   130,    -1,
-     130,    65,   130,    -1,   130,    66,   130,    -1,   130,    71,
-     130,    -1,   130,    72,   130,    -1,    73,   130,    -1,   130,
-      91,   130,    -1,   130,    77,   130,    -1,   130,    78,   130,
-      -1,   130,    79,   130,    -1,    92,   130,    -1,    93,   130,
-      -1,    98,   130,    99,    -1,   102,   149,   103,    -1,    84,
-     130,    85,   130,    -1,    84,   130,    86,   130,    -1,    80,
-     130,    47,   130,    -1,    80,   130,    54,   130,    47,   130,
-      -1,    81,   130,    47,   130,    -1,    81,   130,    54,   130,
-      47,   130,    -1,    82,   130,    47,   130,    -1,    82,   130,
-      54,   130,    47,   130,    -1,    83,   130,    47,   130,    -1,
-      83,   130,    54,   130,    47,   130,    -1,    27,   130,    -1,
-      49,   130,    -1,   136,    -1,   139,    -1,    37,    50,    -1,
-      37,    -1,    39,   133,    -1,    88,   134,    -1,    64,   135,
-      -1,    17,    -1,    19,   130,    -1,    18,   130,    -1,    18,
-      -1,    20,   150,    -1,    20,    98,   150,    99,    -1,    90,
-      98,    28,    99,    -1,    90,    98,    28,   104,   149,    99,
-      -1,    61,   130,    56,   130,    -1,    61,   130,    -1,    21,
-      28,   149,    -1,    28,    -1,   133,   104,    28,    -1,    28,
-      -1,   134,   104,    28,    -1,    28,    -1,   135,   104,    28,
-      -1,    40,    43,    -1,    40,    46,    -1,    40,    48,    -1,
-      40,   137,    -1,    40,   137,   138,    -1,    40,   138,    -1,
-      38,   130,    -1,   130,    -1,    47,    45,   130,    -1,    45,
-     130,    -1,    62,    63,    -1,    62,   137,    -1,    62,   137,
-     138,    -1,    62,   138,    -1,    -1,    33,   140,   149,    -1,
-      -1,    44,    28,   142,   125,   145,   107,   147,   127,    -1,
-      59,    28,    -1,    -1,    60,    28,   143,   125,   145,   107,
-     147,   127,    -1,   144,   125,   145,   107,   147,   127,    32,
-     146,    -1,   144,   125,   145,   107,   147,   127,    -1,    89,
-      28,    -1,    -1,    28,    -1,   145,   104,    28,    -1,   145,
-     107,   104,    28,    -1,    -1,    28,    -1,   146,   104,    28,
-      -1,    -1,    28,   150,    -1,    -1,   130,    -1,   149,   104,
-     130,    -1,   130,    -1,   150,   104,   130,    -1
+      -1,   142,    -1,   114,    -1,    49,   131,    42,    28,    -1,
+      49,   131,    42,   132,    -1,    49,   131,    75,   131,    -1,
+      49,   131,    76,   131,    -1,    51,    28,    69,   131,    -1,
+      51,    13,    69,   131,    -1,    51,    28,    54,   131,    -1,
+      51,    13,    54,   131,    -1,    51,    14,   131,    54,   131,
+      -1,    51,    14,   130,    69,   131,    -1,   149,    -1,   131,
+      -1,   133,    -1,   113,    -1,   115,    -1,   121,   131,   127,
+     126,    32,    -1,   122,    69,   131,   126,    54,   131,   126,
+     127,   126,    32,    -1,   122,    69,   131,   126,    34,    54,
+     131,   126,   127,   126,    32,    -1,   128,   113,   126,    -1,
+     129,   131,   107,   127,   126,    32,    -1,   129,   131,    54,
+     131,    -1,   123,   131,   108,   127,   126,    32,    -1,   123,
+     131,   108,   127,   126,   109,   127,   126,    32,    -1,   123,
+     131,   108,   127,   126,   125,   117,   126,    32,    -1,   123,
+     131,   108,   127,   126,   109,   125,   113,   126,    -1,   123,
+     131,    52,   125,   113,   126,   118,   126,   116,   126,    -1,
+     123,   131,    52,   125,   113,   126,   109,   125,   113,   126,
+      -1,   123,   131,    52,   125,   113,   126,    -1,    -1,   109,
+     125,   113,    -1,   117,   120,    -1,   120,    -1,   118,   119,
+      -1,   119,    -1,   124,   131,    52,   125,   114,   126,    -1,
+     118,    -1,   124,   131,    52,   125,   127,   126,    -1,   124,
+     131,   108,   125,   127,   126,    -1,    50,    57,    -1,    50,
+      56,    28,    -1,    41,    -1,   110,    -1,    -1,    -1,   125,
+      -1,   127,   107,    -1,   127,   114,    -1,    55,    28,    52,
+      -1,    87,    -1,    12,    -1,    15,    -1,    31,    -1,    29,
+      -1,    28,    -1,   130,    -1,   132,    -1,    23,    -1,    24,
+     131,    -1,    25,   151,    -1,    25,    98,   151,    99,    -1,
+      28,    98,   150,    99,    -1,    13,    -1,    14,   131,    -1,
+     112,    -1,   131,    92,   131,    -1,   131,    93,   131,    -1,
+     131,    94,   131,    -1,   131,    95,   131,    -1,   131,    74,
+     131,    -1,   131,   100,   131,    -1,   131,   101,   131,    -1,
+     131,    69,   131,    -1,   131,    70,   131,    -1,   131,    65,
+     131,    -1,   131,    66,   131,    -1,   131,    71,   131,    -1,
+     131,    72,   131,    -1,    73,   131,    -1,   131,    91,   131,
+      -1,   131,    77,   131,    -1,   131,    78,   131,    -1,   131,
+      79,   131,    -1,    92,   131,    -1,    93,   131,    -1,    98,
+     131,    99,    -1,   102,   150,   103,    -1,    84,   131,    85,
+     131,    -1,    84,   131,    86,   131,    -1,    80,   131,    47,
+     131,    -1,    80,   131,    54,   131,    47,   131,    -1,    81,
+     131,    47,   131,    -1,    81,   131,    54,   131,    47,   131,
+      -1,    82,   131,    47,   131,    -1,    82,   131,    54,   131,
+      47,   131,    -1,    83,   131,    47,   131,    -1,    83,   131,
+      54,   131,    47,   131,    -1,    27,   131,    -1,    49,   131,
+      -1,   137,    -1,   140,    -1,    37,    50,    -1,    37,    -1,
+      39,   134,    -1,    88,   135,    -1,    64,   136,    -1,    17,
+      -1,    19,   131,    -1,    18,   131,    -1,    18,    -1,    20,
+     151,    -1,    20,    98,   151,    99,    -1,    90,    98,    28,
+      99,    -1,    90,    98,    28,   104,   150,    99,    -1,    61,
+     131,    56,   131,    -1,    61,   131,    -1,    21,    28,   150,
+      -1,    28,    -1,   134,   104,    28,    -1,    28,    -1,   135,
+     104,    28,    -1,    28,    -1,   136,   104,    28,    -1,    40,
+      43,    -1,    40,    46,    -1,    40,    48,    -1,    40,   138,
+      -1,    40,   138,   139,    -1,    40,   139,    -1,    38,   131,
+      -1,   131,    -1,    47,    45,   131,    -1,    45,   131,    -1,
+      62,    63,    -1,    62,   138,    -1,    62,   138,   139,    -1,
+      62,   139,    -1,    -1,    33,   141,   150,    -1,    -1,    44,
+      28,   143,   125,   146,   107,   148,   127,    -1,    59,    28,
+      -1,    -1,    60,    28,   144,   125,   146,   107,   148,   127,
+      -1,   145,   125,   146,   107,   148,   127,    32,   147,    -1,
+     145,   125,   146,   107,   148,   127,    -1,    89,    28,    -1,
+      -1,    28,    -1,   146,   104,    28,    -1,   146,   107,   104,
+      28,    -1,    -1,    28,    -1,   147,   104,    28,    -1,    -1,
+      28,   151,    -1,    -1,   131,    -1,   150,   104,   131,    -1,
+     131,    -1,   151,   104,   131,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -697,21 +699,22 @@ static const yytype_uint16 yyrline[] =
 {
        0,   120,   120,   121,   122,   125,   130,   135,   140,   145,
      146,   147,   150,   156,   159,   160,   161,   167,   174,   180,
-     187,   195,   196,   197,   200,   201,   206,   219,   237,   251,
-     256,   259,   264,   274,   286,   298,   308,   318,   328,   340,
-     341,   344,   345,   348,   349,   352,   360,   361,   367,   375,
-     378,   385,   392,   400,   403,   406,   407,   408,   411,   417,
-     421,   424,   427,   430,   433,   434,   437,   440,   441,   442,
-     445,   449,   457,   463,   464,   465,   466,   467,   468,   469,
-     470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
-     480,   481,   482,   483,   484,   485,   486,   487,   488,   489,
-     490,   491,   492,   493,   494,   495,   498,   503,   504,   505,
-     506,   507,   508,   509,   510,   511,   514,   517,   520,   524,
-     525,   526,   527,   528,   529,   530,   533,   534,   537,   538,
-     541,   542,   553,   554,   555,   556,   560,   564,   570,   571,
-     574,   575,   578,   579,   583,   587,   591,   591,   621,   621,
-     626,   627,   627,   632,   639,   645,   647,   648,   649,   650,
-     653,   654,   655,   658,   662,   670,   671,   672,   675,   676
+     187,   193,   201,   202,   203,   206,   207,   212,   225,   243,
+     257,   262,   265,   270,   280,   292,   304,   314,   324,   334,
+     346,   347,   350,   351,   354,   355,   358,   366,   367,   373,
+     381,   384,   391,   398,   406,   409,   412,   413,   414,   417,
+     423,   427,   430,   433,   436,   439,   445,   446,   447,   450,
+     453,   454,   455,   458,   466,   472,   473,   474,   475,   476,
+     477,   478,   479,   480,   481,   482,   483,   484,   485,   486,
+     487,   488,   489,   490,   491,   492,   493,   494,   495,   496,
+     497,   498,   499,   500,   501,   502,   503,   504,   507,   512,
+     513,   514,   515,   516,   517,   518,   519,   520,   523,   526,
+     529,   533,   534,   535,   536,   537,   538,   539,   542,   543,
+     546,   547,   550,   551,   562,   563,   564,   565,   569,   573,
+     579,   580,   583,   584,   587,   588,   592,   596,   600,   600,
+     630,   630,   635,   636,   636,   641,   648,   654,   656,   657,
+     658,   659,   662,   663,   664,   667,   671,   679,   680,   681,
+     684,   685
 };
 #endif
 
@@ -739,11 +742,11 @@ static const char *const yytname[] =
   "nlelsif", "programline", "asgn", "stmtoneliner", "stmt", "ifstmt",
   "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
   "elseifstmtoneliner1", "elseifstmt1", "repeatwhile", "repeatwith", "if",
-  "elseif", "begin", "end", "stmtlist", "when", "tell", "expr",
-  "reference", "proc", "globallist", "propertylist", "instancelist",
-  "gotofunc", "gotoframe", "gotomovie", "playfunc", "@1", "defn", "@2",
-  "@3", "on", "argdef", "endargdef", "argstore", "macro", "arglist",
-  "nonemptyarglist", 0
+  "elseif", "begin", "end", "stmtlist", "when", "tell", "simpleexpr",
+  "expr", "reference", "proc", "globallist", "propertylist",
+  "instancelist", "gotofunc", "gotoframe", "gotomovie", "playfunc", "@1",
+  "defn", "@2", "@3", "on", "argdef", "endargdef", "argstore", "macro",
+  "arglist", "nonemptyarglist", 0
 };
 #endif
 
@@ -771,21 +774,22 @@ static const yytype_uint8 yyr1[] =
 {
        0,   105,   106,   106,   106,   107,   108,   109,   110,   111,
      111,   111,   112,   112,   112,   112,   112,   112,   112,   112,
-     112,   113,   113,   113,   114,   114,   114,   114,   114,   114,
-     114,   114,   115,   115,   115,   115,   115,   115,   115,   116,
-     116,   117,   117,   118,   118,   119,   120,   120,   120,   121,
-     122,   123,   124,   125,   126,   127,   127,   127,   128,   129,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   131,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   133,   133,   134,   134,
-     135,   135,   136,   136,   136,   136,   136,   136,   137,   137,
-     138,   138,   139,   139,   139,   139,   140,   139,   142,   141,
-     141,   143,   141,   141,   141,   144,   145,   145,   145,   145,
-     146,   146,   146,   147,   148,   149,   149,   149,   150,   150
+     112,   112,   113,   113,   113,   114,   114,   114,   114,   114,
+     114,   114,   114,   115,   115,   115,   115,   115,   115,   115,
+     116,   116,   117,   117,   118,   118,   119,   120,   120,   120,
+     121,   122,   123,   124,   125,   126,   127,   127,   127,   128,
+     129,   130,   130,   130,   130,   130,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   132,   133,
+     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   133,   133,   133,   133,   133,   134,   134,
+     135,   135,   136,   136,   137,   137,   137,   137,   137,   137,
+     138,   138,   139,   139,   140,   140,   140,   140,   141,   140,
+     143,   142,   142,   144,   142,   142,   142,   145,   146,   146,
+     146,   146,   147,   147,   147,   148,   149,   150,   150,   150,
+     151,   151
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -793,21 +797,22 @@ static const yytype_uint8 yyr2[] =
 {
        0,     2,     3,     1,     2,     1,     1,     1,     1,     0,
        1,     1,     4,     4,     4,     4,     4,     4,     4,     4,
-       5,     1,     1,     1,     1,     1,     5,    10,    11,     3,
-       6,     4,     6,     9,     9,     9,    10,    10,     6,     0,
-       3,     2,     1,     2,     1,     6,     1,     6,     6,     2,
-       3,     1,     1,     0,     0,     1,     2,     2,     3,     1,
-       1,     1,     1,     1,     1,     1,     2,     2,     4,     4,
-       1,     1,     2,     1,     3,     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,     2,     1,     1,
-       2,     1,     2,     2,     2,     1,     2,     2,     1,     2,
-       4,     4,     6,     4,     2,     3,     1,     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,     8,     6,     2,     0,     1,     3,     4,
-       0,     1,     3,     0,     2,     0,     1,     3,     1,     3
+       5,     5,     1,     1,     1,     1,     1,     5,    10,    11,
+       3,     6,     4,     6,     9,     9,     9,    10,    10,     6,
+       0,     3,     2,     1,     2,     1,     6,     1,     6,     6,
+       2,     3,     1,     1,     0,     0,     1,     2,     2,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
+       2,     4,     4,     1,     2,     1,     3,     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,     2,
+       1,     1,     2,     1,     2,     2,     2,     1,     2,     2,
+       1,     2,     4,     4,     6,     4,     2,     3,     1,     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,     8,     6,     2,     0,     1,
+       3,     4,     0,     1,     3,     0,     2,     0,     1,     3,
+       1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -815,107 +820,107 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    60,    71,     0,    61,   115,   118,     0,     0,
-       0,    65,     0,     0,     0,    70,    63,    62,   146,   111,
-       0,     0,    51,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    59,
-       0,     0,     0,     0,     0,     0,   165,     0,     3,    73,
-      24,    11,    25,     0,     0,     0,     0,     0,    22,    64,
-      23,   108,   109,    10,    53,    21,     5,     4,    70,     0,
-      72,   117,   116,     0,   168,   119,   165,    66,     0,    67,
-     106,   165,   164,   165,   110,   126,   112,     0,   132,     0,
-     133,     0,   134,   139,   135,   137,   148,   107,     0,    49,
-       0,     0,     0,     0,   150,   151,   124,   142,   143,   145,
-     130,   114,    87,     0,     0,     0,     0,     0,   128,   113,
-     155,     0,    92,    93,     0,   166,     0,     1,     9,    53,
-       0,     0,    54,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    61,    73,     0,    62,   117,   120,     0,     0,
+       0,    68,     0,     0,     0,    65,    64,    63,   148,   113,
+       0,     0,    52,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    60,
+       0,     0,     0,     0,     0,     0,   167,     0,     3,    75,
+      25,    11,    26,     0,     0,     0,     0,     0,    66,    23,
+      67,    24,   110,   111,    10,    54,    22,     5,     4,    65,
+       0,    74,   119,   118,     0,   170,   121,   167,    69,     0,
+      70,   108,   167,   166,   167,   112,   128,   114,     0,   134,
+       0,   135,     0,   136,   141,   137,   139,   150,   109,     0,
+      50,     0,     0,     0,     0,   152,   153,   126,   144,   145,
+     147,   132,   116,    89,     0,     0,     0,     0,     0,   130,
+     115,   157,     0,    94,    95,     0,   168,     0,     1,     9,
+      54,     0,     0,    55,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   156,   165,     0,   168,     0,     0,   125,     0,   166,
-       0,   147,     0,   138,   141,     0,   136,    53,     0,     0,
-       0,    50,     0,     0,     0,     0,     0,    58,    53,     0,
-     144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    94,    95,     0,     2,    55,    54,
-      54,    53,     6,    53,    29,     0,    53,    83,    84,    81,
-      82,    85,    86,    78,    89,    90,    91,    88,    74,    75,
-      76,    77,    79,    80,   157,     0,   120,   169,    68,    69,
-     127,   140,   156,    12,    13,    14,    15,    19,    17,     0,
-      18,    16,   156,   123,   131,    98,     0,   100,     0,   102,
-       0,   104,     0,    96,    97,   129,   121,   165,   167,    56,
-      57,     0,     0,     0,    54,    31,    54,     0,   163,     0,
-      20,     0,     0,     0,     0,     0,     0,    26,     0,     0,
-      54,    53,     0,   158,     0,    53,   163,   163,    99,   101,
-     103,   105,   122,     0,    54,    38,    32,     7,    53,     0,
-      30,   159,   154,    53,    53,    54,    53,     8,    53,    52,
-      54,    44,     0,    55,    54,    54,    46,    42,     0,   160,
-     149,   152,    53,    54,     0,    43,    39,     0,    54,     0,
-      41,     0,     0,   161,   153,    54,     0,    54,    53,    54,
-      53,    35,    33,    34,    53,    53,     0,     0,    27,    37,
-       0,    36,     0,    53,    53,   162,    28,    40,    54,    54,
-      54,    45,    47,    48
+       0,     0,   158,   167,     0,   170,     0,     0,   127,     0,
+     168,     0,   149,     0,   140,   143,     0,   138,    54,     0,
+       0,     0,    51,     0,     0,    66,     0,     0,     0,    59,
+      54,     0,   146,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    96,    97,     0,     2,
+      56,    55,    55,    54,     6,    54,    30,     0,    54,    85,
+      86,    83,    84,    87,    88,    80,    91,    92,    93,    90,
+      76,    77,    78,    79,    81,    82,   159,     0,   122,   171,
+      71,    72,   129,   142,   158,    12,    13,    14,    15,    19,
+      17,     0,     0,    18,    16,   158,   125,   133,   100,     0,
+     102,     0,   104,     0,   106,     0,    98,    99,   131,   123,
+     167,   169,    57,    58,     0,     0,     0,    55,    32,    55,
+       0,   165,     0,    21,    20,     0,     0,     0,     0,     0,
+       0,    27,     0,     0,    55,    54,     0,   160,     0,    54,
+     165,   165,   101,   103,   105,   107,   124,     0,    55,    39,
+      33,     7,    54,     0,    31,   161,   156,    54,    54,    55,
+      54,     8,    54,    53,    55,    45,     0,    56,    55,    55,
+      47,    43,     0,   162,   151,   154,    54,    55,     0,    44,
+      40,     0,    55,     0,    42,     0,     0,   163,   155,    55,
+       0,    55,    54,    55,    54,    36,    34,    35,    54,    54,
+       0,     0,    28,    38,     0,    37,     0,    54,    54,   164,
+      29,    41,    55,    55,    55,    46,    48,    49
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    47,   259,   203,   298,   309,    48,    49,    50,   260,
-      52,   339,   315,   316,   311,   317,    53,    54,    55,   312,
-     198,   204,   199,    56,    57,    58,    59,    60,    86,   119,
-     111,    61,    94,    95,    62,    83,    63,   167,   178,    64,
-     225,   334,   285,    65,   160,    75
+      -1,    47,   262,   205,   302,   313,    48,    49,    50,   263,
+      52,   343,   319,   320,   315,   321,    53,    54,    55,   316,
+     200,   206,   201,    56,    57,    58,    59,    60,    61,    87,
+     120,   112,    62,    95,    96,    63,    84,    64,   168,   180,
+      65,   227,   338,   289,    66,   161,    76
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -291
+#define YYPACT_NINF -287
 static const yytype_int16 yypact[] =
 {
-     372,   -75,  -291,  -291,  1025,  -291,  -291,  1025,  1025,  1065,
-      27,  -291,  1025,  1141,  1025,  1181,  -291,  -291,  -291,   -25,
-      35,   909,  -291,    39,  1025,    45,    51,    57,    65,    76,
-    1025,   949,    79,  1025,  1025,  1025,  1025,  1025,  1025,  -291,
-      88,    89,    20,  1025,  1025,  1025,  1025,     2,  -291,  -291,
-    -291,  -291,  -291,  1025,    50,  1025,   827,  1025,  1747,  -291,
-    -291,  -291,  -291,  -291,  -291,  -291,  -291,  -291,    28,  1025,
-    1747,  1747,  1747,  1025,  1747,    21,  1025,  1747,  1025,    21,
-    1747,  1025,    21,  1025,  -291,  -291,    46,  1025,  -291,  1025,
-    -291,   106,  -291,  1747,    36,  -291,  -291,  1215,   124,  -291,
-     -10,  1025,    18,   102,  -291,  -291,  1644,  -291,    36,  -291,
-    -291,    52,   -53,  1248,  1281,  1314,  1347,  1677,  -291,    53,
-    -291,   127,   -53,   -53,  1710,  1747,     6,  -291,   463,  1747,
-    1025,  1512,  -291,  1611,  1025,  1025,  1025,  1025,  1025,  1025,
-    1025,  1025,  1025,  1025,  1025,  1025,  1025,  1025,  1025,  1025,
-    1025,   130,  1025,  1215,  1710,   -46,  1025,    55,   -30,  1710,
-      -8,    55,   132,  1747,  1747,  1025,  -291,  -291,    85,  1025,
-    1025,  -291,  1025,  1025,   803,  1025,  1025,  -291,  -291,  1025,
-    -291,   133,  1025,  1025,  1025,  1025,  1025,  1025,  1025,  1025,
-    1025,  1025,   136,    -7,  -291,  -291,  1025,  -291,  -291,   645,
-    1747,  -291,  -291,  -291,  -291,  1025,  -291,    29,    29,    29,
-      29,   151,   151,   -53,  1747,    29,    29,   173,    -6,    -6,
-     -53,   -53,  1747,  1747,  -291,   -48,  -291,  1747,  -291,  -291,
-    -291,  1747,   130,  -291,  -291,  1747,  1747,  1747,    29,  1025,
-    1747,    29,   130,  1747,  -291,  1747,  1380,  1747,  1413,  1747,
-    1446,  1747,  1479,  1747,  1747,  -291,  -291,  1025,  1747,  -291,
-    -291,   139,     3,   827,   645,  1747,   645,   137,    64,   -48,
-    1747,   -48,  1025,  1025,  1025,  1025,     1,  -291,   121,  1025,
-    -291,   -29,   145,  -291,   150,  -291,    64,    64,  1747,  1747,
-    1747,  1747,  -291,  1025,  1747,   -22,  -291,  -291,  -291,   153,
-    -291,  -291,   554,  -291,  -291,  1747,  -291,  -291,  -291,  -291,
-     153,  -291,  1025,   827,   645,   153,   153,  -291,  1025,   163,
-     645,   645,  -291,   645,   827,  -291,   134,  1578,  -291,   162,
-    -291,   164,  1545,  -291,    91,   645,   166,  -291,  -291,  -291,
-    -291,  -291,  -291,  -291,  -291,  -291,   171,   168,  -291,  -291,
-     827,  -291,   736,   736,  -291,  -291,  -291,  -291,  -291,   645,
-     645,  -291,  -291,  -291
+     381,   -50,  -287,  -287,  1034,  -287,  -287,  1034,  1034,  1074,
+      41,  -287,  1034,  1150,  1034,  1190,  -287,  -287,  -287,    38,
+      45,   918,  -287,    64,  1034,   -32,    42,    91,    98,   123,
+    1034,   958,   124,  1034,  1034,  1034,  1034,  1034,  1034,  -287,
+     125,   127,   -33,  1034,  1034,  1034,  1034,     3,  -287,  -287,
+    -287,  -287,  -287,  1034,    87,  1034,   836,  1034,  -287,  1756,
+    -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,    59,
+    1034,  1756,  1756,  1756,  1034,  1756,    54,  1034,  1756,  1034,
+      54,  1756,  1034,    54,  1034,  -287,  -287,    55,  1034,  -287,
+    1034,  -287,   115,  -287,  1756,    37,  -287,  -287,  1224,   133,
+    -287,    -1,  1034,     6,   110,  -287,  -287,  1653,  -287,    37,
+    -287,  -287,    61,   -63,  1257,  1290,  1323,  1356,  1686,  -287,
+      62,  -287,   141,   -63,   -63,  1719,  1756,    -2,  -287,   472,
+    1756,  1034,  1521,  -287,  1620,  1034,  1034,  1034,  1034,  1034,
+    1034,  1034,  1034,  1034,  1034,  1034,  1034,  1034,  1034,  1034,
+    1034,  1034,   144,  1034,  1224,  1719,   -40,  1034,    69,   -27,
+    1719,    -8,    69,   149,  1756,  1756,  1034,  -287,  -287,    97,
+    1034,  1034,  -287,  1034,  1034,   111,   812,  1034,  1034,  -287,
+    -287,  1034,  -287,   163,  1034,  1034,  1034,  1034,  1034,  1034,
+    1034,  1034,  1034,  1034,   165,    19,  -287,  -287,  1034,  -287,
+    -287,   654,  1756,  -287,  -287,  -287,  -287,  1034,  -287,    12,
+      12,    12,    12,   158,   158,   -63,  1756,    12,    12,    16,
+      20,    20,   -63,   -63,  1756,  1756,  -287,   -46,  -287,  1756,
+    -287,  -287,  -287,  1756,   144,  -287,  -287,  1756,  1756,  1756,
+      12,  1034,  1034,  1756,    12,   144,  1756,  -287,  1756,  1389,
+    1756,  1422,  1756,  1455,  1756,  1488,  1756,  1756,  -287,  -287,
+    1034,  1756,  -287,  -287,   162,    -5,   836,   654,  1756,   654,
+     168,    99,   -46,    12,  1756,   -46,  1034,  1034,  1034,  1034,
+      23,  -287,   147,  1034,  -287,   -10,   170,  -287,   177,  -287,
+      99,    99,  1756,  1756,  1756,  1756,  -287,  1034,  1756,   -13,
+    -287,  -287,  -287,   171,  -287,  -287,   563,  -287,  -287,  1756,
+    -287,  -287,  -287,  -287,   171,  -287,  1034,   836,   654,   171,
+     171,  -287,  1034,   178,   654,   654,  -287,   654,   836,  -287,
+     150,  1587,  -287,   179,  -287,   180,  1554,  -287,   105,   654,
+     181,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
+     182,   183,  -287,  -287,   836,  -287,   745,   745,  -287,  -287,
+    -287,  -287,  -287,   654,   654,  -287,  -287,  -287
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -291,  -291,    15,  -131,  -280,  -291,    77,  -291,   -49,     0,
-    -291,  -291,  -291,   -91,  -290,  -109,  -291,  -291,  -291,  -276,
-      -4,    23,   -95,  -291,  -291,    -3,    42,  -291,  -291,  -291,
-    -291,  -291,   176,   -18,  -291,  -291,  -291,  -291,  -291,  -291,
-    -181,  -291,  -172,  -291,   -38,     4
+    -287,  -287,    15,  -122,  -286,  -287,    89,  -287,   -49,     0,
+    -287,  -287,  -287,   -80,  -257,   -99,  -287,  -287,  -287,  -283,
+      -4,    28,  -110,  -287,  -287,   119,    -3,    56,  -287,  -287,
+    -287,  -287,  -287,   195,   -29,  -287,  -287,  -287,  -287,  -287,
+    -287,  -219,  -287,  -160,  -287,   -38,     4
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -925,45 +930,55 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -10
 static const yytype_int16 yytable[] =
 {
-      51,    70,   127,   296,    71,    72,    74,   132,   126,    77,
-      74,    80,    74,   109,   307,   308,    67,    79,    93,    82,
-     325,    97,    66,   318,   141,    84,   325,   106,    93,   297,
-     112,   113,   114,   115,   116,   117,   297,   278,   157,   318,
-     122,   123,   124,   125,   172,   161,   338,   149,   150,    66,
-     129,   269,   131,   226,   133,    76,   267,   279,   156,   173,
-     151,   271,   128,    85,   100,   101,   153,    96,   140,   228,
-     154,   141,   175,   125,   156,   154,   166,   155,   159,   102,
-     125,    89,   158,    91,   163,   103,   164,   176,   147,   148,
-     180,   229,   256,   104,   149,   150,   196,   257,   174,    66,
-     292,    98,    99,   140,   105,   196,   141,   110,   264,   195,
-     196,   266,    14,   233,   303,   304,   118,   120,   121,   130,
-     144,   145,   146,   147,   148,   156,   152,   200,    51,   149,
-     150,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   206,   125,
-     162,   165,   171,   227,   177,   193,   181,   192,   224,   196,
-     230,   244,   231,   232,   255,   283,   235,   236,   284,   237,
-     238,   277,   240,   241,   242,   293,   243,   300,   301,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   307,
-     302,   333,   297,   258,   342,   346,   343,   263,   348,   355,
-     356,   345,   265,   314,   310,   197,   330,   108,   320,   321,
-     234,   323,     0,     0,   280,     0,   134,   135,     0,   276,
-     136,   137,   261,   262,     0,   140,     0,   335,   141,   142,
-     143,     0,     0,     0,     0,     0,   270,     0,     0,     0,
-     268,     0,   144,   145,   146,   147,   148,   140,     0,     0,
-     141,   149,   150,     0,   125,     0,     0,     0,   359,   360,
-       0,     0,     0,     0,   328,   145,   146,   147,   148,   288,
-     289,   290,   291,   149,   150,   337,   294,   299,     0,     0,
-       0,     0,     0,     0,   286,     0,   287,   281,     0,   282,
-     305,     0,     0,     0,   313,     0,     0,     0,     0,     0,
-       0,   357,     0,   295,   324,     0,     0,     0,     0,   327,
-       0,     0,     0,     0,     0,   332,     0,   306,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   322,     0,
-       0,     0,     0,   326,   350,     0,   352,   329,   331,     0,
-     353,   354,     0,     0,     0,     0,   336,     0,     0,     0,
-       0,   341,   358,   358,     0,     0,     0,     0,   347,     0,
-     349,     0,   351,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    -9,     1,     0,     0,     0,     0,     0,     0,
-       0,   361,   362,   363,     2,     3,     4,     5,     0,     6,
+      51,    71,   110,   128,    72,    73,    75,   133,   127,    78,
+      75,    81,    75,   312,   142,   272,    68,    80,    94,    83,
+     322,    98,   300,   311,    99,   100,   275,   107,    94,   282,
+     113,   114,   115,   116,   117,   118,   322,   150,   151,   158,
+     123,   124,   125,   126,   342,   301,   162,    67,   301,   283,
+     130,    67,   132,   173,   134,   101,   102,   329,   270,   228,
+     177,   152,   129,   329,   157,   122,   167,   154,   174,    77,
+     103,   155,   230,    86,   126,   178,   155,   157,   156,   160,
+     182,   126,    90,   159,    92,   164,   141,   165,    85,   142,
+     141,   231,    97,   142,   141,   267,   198,   142,   269,   176,
+      67,   197,   198,   145,   146,   147,   148,   149,   146,   147,
+     148,   149,   150,   151,   148,   149,   150,   151,   259,   104,
+     150,   151,   296,   260,    14,   235,   105,   198,   202,    51,
+     307,   308,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   208,
+     126,   106,   111,   119,   229,   121,   131,   153,   157,   163,
+     166,   172,   179,   233,   234,   183,   194,   237,   238,   195,
+     239,   240,   226,   198,   243,   244,   245,   232,   246,   306,
+     241,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   247,   318,   258,   281,   261,   287,   324,   325,   266,
+     327,   297,   304,   288,   268,   305,   337,   311,   301,   350,
+     359,   346,   347,   352,   349,   360,   339,   284,   199,   314,
+     334,   175,   280,   135,   136,   236,   109,   137,   138,   264,
+     265,     0,   141,     0,     0,   142,   143,   144,   273,   274,
+       0,     0,   271,     0,     0,     0,     0,   363,   364,   145,
+     146,   147,   148,   149,     0,     0,     0,   126,   150,   151,
+       0,     0,     0,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,     0,   292,   293,   294,   295,     0,     0,   341,
+     298,   303,     0,     0,     0,     0,     0,   290,     0,     0,
+     291,     0,     0,     0,   309,   285,     0,   286,   317,     0,
+       0,     0,     0,     0,     0,   361,     0,     0,   328,     0,
+       0,     0,   299,   331,     0,     0,     0,     0,     0,   336,
+       0,     0,     0,     0,     0,     0,   310,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   326,   354,     0,
+     356,     0,   330,     0,   357,   358,   333,   335,     0,     0,
+       0,     0,     0,     0,     0,   340,   362,   362,     0,     0,
+     345,     0,     0,     0,     0,     0,     0,   351,     0,   353,
+       0,   355,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    -9,     1,     0,     0,     0,     0,     0,     0,     0,
+     365,   366,   367,     2,     3,     4,     5,     0,     6,     7,
+       8,     9,    10,     0,    11,    12,    13,     0,    14,    15,
+      16,     0,    17,     0,    18,     0,     0,     0,    19,     0,
+      20,    21,    22,     0,     0,    23,     0,     0,     0,     0,
+      24,    25,    26,     0,     0,     0,    27,     0,     0,     0,
+      28,    29,    30,    31,     0,    32,     0,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
+       0,    34,    35,    36,    37,    38,     0,     0,    39,    40,
+      41,    42,     0,    43,    44,     0,     0,     0,    -9,    45,
+       0,     0,     0,    46,     2,     3,     4,     5,     0,     6,
        7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
       15,    16,     0,    17,     0,    18,     0,     0,     0,    19,
        0,    20,    21,    22,     0,     0,    23,     0,     0,     0,
@@ -971,26 +986,26 @@ static const yytype_int16 yytable[] =
        0,    28,    29,    30,    31,     0,    32,     0,     0,     0,
        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
        0,     0,    34,    35,    36,    37,    38,     0,     0,    39,
-      40,    41,    42,     0,    43,    44,     0,     0,     0,    -9,
+      40,    41,    42,     0,    43,    44,     0,     0,     0,     0,
       45,     0,     0,     0,    46,     2,     3,     4,     5,     0,
        6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
-      14,    15,    16,     0,    17,     0,    18,     0,     0,     0,
-      19,     0,    20,    21,    22,     0,     0,    23,     0,     0,
+      14,    15,    16,     0,    17,   323,    18,     0,     0,     0,
+      19,     0,    20,    21,    22,     0,     0,     0,     0,     0,
        0,     0,    24,    25,    26,     0,     0,     0,    27,     0,
-       0,     0,    28,    29,    30,    31,     0,    32,     0,     0,
+       0,     0,     0,     0,    30,    31,     0,    32,     0,     0,
        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
        0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
-      39,    40,    41,    42,     0,    43,    44,     0,     0,     0,
-       0,    45,     0,     0,     0,    46,     2,     3,     4,     5,
+      39,    40,     0,    42,     0,    43,    44,     0,     0,     0,
+      67,    45,     0,     0,     0,    46,     2,     3,     4,     5,
        0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,    14,    15,    16,     0,    17,   319,    18,     0,     0,
+       0,    14,    15,    16,     0,    17,     0,    18,     0,     0,
        0,    19,     0,    20,    21,    22,     0,     0,     0,     0,
        0,     0,     0,    24,    25,    26,     0,     0,     0,    27,
        0,     0,     0,     0,     0,    30,    31,     0,    32,     0,
        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
        0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
        0,    39,    40,     0,    42,     0,    43,    44,     0,     0,
-       0,    66,    45,     0,     0,     0,    46,     2,     3,     4,
+       0,    67,    45,     0,     0,     0,    46,     2,     3,     4,
        5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
       13,     0,    14,    15,    16,     0,    17,     0,    18,     0,
        0,     0,    19,     0,    20,    21,    22,     0,     0,     0,
@@ -999,160 +1014,161 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
        0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
        0,     0,    39,    40,     0,    42,     0,    43,    44,     0,
-       0,     0,    66,    45,     0,     0,     0,    46,     2,     3,
+       0,     0,     0,    45,     0,     0,     0,    46,     2,     3,
        4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,    14,    15,    16,     0,    17,     0,    18,
-       0,     0,     0,    19,     0,    20,    21,    22,     0,     0,
-       0,     0,     0,     0,     0,    24,    25,    26,     0,     0,
-       0,    27,     0,     0,     0,     0,     0,    30,    31,     0,
-      32,     0,     0,     0,     0,     0,     0,     0,     0,    33,
-       0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
-      38,     0,     0,    39,    40,     0,    42,     0,    43,    44,
-       0,     0,     0,     0,    45,     0,     0,     0,    46,     2,
-       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
-      11,    12,    13,     0,    14,    15,    16,   239,    17,     0,
-      18,     0,     0,     0,    19,     0,    20,    21,   134,   135,
-       0,     0,   136,   137,   138,   139,    24,   140,    26,     0,
-     141,   142,   143,     0,     0,     0,     0,     0,    30,    31,
-       0,    32,     0,     0,   144,   145,   146,   147,   148,     0,
-      33,     0,     0,   149,   150,     0,     0,    34,    35,    36,
-      37,    38,     0,     0,     0,    40,     0,    42,     0,    43,
-      44,     2,     3,     4,     5,    45,     0,     0,     0,    46,
-       0,     0,    11,    12,    13,     0,    14,    68,    16,     0,
-      17,     0,     0,     0,     0,     0,     0,    87,     0,     0,
-       0,     0,    88,     0,    89,    90,    91,    92,    69,     0,
-      26,     2,     3,     4,     5,     0,     0,     0,     0,     0,
-       0,     0,    11,    12,    13,     0,    14,    68,    16,     0,
-      17,     0,    33,     0,     0,     0,     0,    87,     0,    34,
-      35,    36,    37,    38,    89,     0,    91,     0,    69,     0,
-      26,    43,    44,     0,     0,     0,     0,    45,     0,     0,
-       0,    46,   107,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
-      35,    36,    37,    38,     0,     0,     0,     2,     3,     4,
-       5,    43,    44,     0,     0,     0,     0,    45,    11,    12,
-      13,    46,    14,    68,    16,     0,    17,     0,     0,     0,
+      12,    13,     0,    14,    15,    16,   242,    17,     0,    18,
+       0,     0,     0,    19,     0,    20,    21,   135,   136,     0,
+       0,   137,   138,   139,   140,    24,   141,    26,     0,   142,
+     143,   144,     0,     0,     0,     0,     0,    30,    31,     0,
+      32,     0,     0,   145,   146,   147,   148,   149,     0,    33,
+       0,     0,   150,   151,     0,     0,    34,    35,    36,    37,
+      38,     0,     0,     0,    40,     0,    42,     0,    43,    44,
+       2,     3,     4,     5,    45,     0,     0,     0,    46,     0,
+       0,    11,    12,    13,     0,    14,    69,    16,     0,    17,
+       0,     0,     0,     0,     0,     0,    88,     0,     0,     0,
+       0,    89,     0,    90,    91,    92,    93,    70,     0,    26,
+       2,     3,     4,     5,     0,     0,     0,     0,     0,     0,
+       0,    11,    12,    13,     0,    14,    69,    16,     0,    17,
+       0,    33,     0,     0,     0,     0,    88,     0,    34,    35,
+      36,    37,    38,    90,     0,    92,     0,    70,     0,    26,
+      43,    44,     0,     0,     0,     0,    45,     0,     0,     0,
+      46,   108,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
+      36,    37,    38,     0,     0,     0,     2,     3,     4,     5,
+      43,    44,     0,     0,     0,     0,    45,    11,    12,    13,
+      46,    14,    69,    16,     0,    17,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    69,     0,    26,     2,     3,     4,
-       5,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-      13,     0,    14,    68,    16,     0,    17,     0,    33,     0,
-       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
-       0,     0,     0,     0,    69,     0,    26,    43,    44,     0,
-       0,     0,     0,    45,     0,     0,     0,    46,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
-       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
-       0,     0,     0,     2,     3,     4,     5,    43,    44,     0,
-       0,     0,     0,    73,    11,    12,    13,    46,    14,    68,
-      16,     0,    17,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    70,     0,    26,     2,     3,     4,     5,
+       0,     0,     0,     0,     0,     0,     0,    11,    12,    13,
+       0,    14,    69,    16,     0,    17,     0,    33,     0,     0,
+       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
+       0,     0,     0,    70,     0,    26,    43,    44,     0,     0,
+       0,     0,    45,     0,     0,     0,    46,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
+       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
+       0,     0,     2,     3,     4,     5,    43,    44,     0,     0,
+       0,     0,    74,    11,    12,    13,    46,    14,    69,    16,
+       0,    17,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    70,
+       0,    26,     2,     3,     4,     5,     0,     0,     0,     0,
+       0,     0,     0,    11,    12,    13,     0,    14,    69,    16,
+       0,    17,     0,    33,     0,     0,     0,     0,     0,     0,
+      34,    35,    36,    37,    38,     0,     0,     0,     0,    70,
+       0,    26,    43,    44,     0,     0,     0,     0,    79,     0,
+       0,     0,    46,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    33,     0,     0,   169,     0,     0,     0,
+      34,    35,    36,    37,    38,     0,     0,     0,     0,     0,
+       0,     0,    43,    44,     0,     0,     0,     0,    82,   135,
+     136,     0,    46,   137,   138,   139,   140,     0,   141,   170,
+     171,   142,   143,   144,   184,     0,     0,     0,     0,     0,
+       0,   185,     0,     0,     0,   145,   146,   147,   148,   149,
+       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
+       0,   141,     0,     0,   142,   143,   144,   186,     0,     0,
+       0,     0,     0,     0,   187,     0,     0,     0,   145,   146,
+     147,   148,   149,     0,     0,   135,   136,   150,   151,   137,
+     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
+     188,     0,     0,     0,     0,     0,     0,   189,     0,     0,
+       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
+     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
+     142,   143,   144,   190,     0,     0,     0,     0,     0,     0,
+     191,     0,     0,     0,   145,   146,   147,   148,   149,     0,
+       0,   135,   136,   150,   151,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,   276,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
+     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,   277,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      69,     0,    26,     2,     3,     4,     5,     0,     0,     0,
-       0,     0,     0,     0,    11,    12,    13,     0,    14,    68,
-      16,     0,    17,     0,    33,     0,     0,     0,     0,     0,
-       0,    34,    35,    36,    37,    38,     0,     0,     0,     0,
-      69,     0,    26,    43,    44,     0,     0,     0,     0,    78,
-       0,     0,     0,    46,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    33,     0,     0,   168,     0,     0,
-       0,    34,    35,    36,    37,    38,     0,     0,     0,     0,
-       0,     0,     0,    43,    44,     0,     0,     0,     0,    81,
-     134,   135,     0,    46,   136,   137,   138,   139,     0,   140,
-     169,   170,   141,   142,   143,   182,     0,     0,     0,     0,
-       0,     0,   183,     0,     0,     0,   144,   145,   146,   147,
-     148,     0,     0,   134,   135,   149,   150,   136,   137,   138,
-     139,     0,   140,     0,     0,   141,   142,   143,   184,     0,
-       0,     0,     0,     0,     0,   185,     0,     0,     0,   144,
-     145,   146,   147,   148,     0,     0,   134,   135,   149,   150,
-     136,   137,   138,   139,     0,   140,     0,     0,   141,   142,
-     143,   186,     0,     0,     0,     0,     0,     0,   187,     0,
-       0,     0,   144,   145,   146,   147,   148,     0,     0,   134,
-     135,   149,   150,   136,   137,   138,   139,     0,   140,     0,
-       0,   141,   142,   143,   188,     0,     0,     0,     0,     0,
-       0,   189,     0,     0,     0,   144,   145,   146,   147,   148,
-       0,     0,   134,   135,   149,   150,   136,   137,   138,   139,
-       0,   140,     0,     0,   141,   142,   143,   272,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   144,   145,
-     146,   147,   148,     0,     0,   134,   135,   149,   150,   136,
-     137,   138,   139,     0,   140,     0,     0,   141,   142,   143,
-     273,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   144,   145,   146,   147,   148,     0,     0,   134,   135,
-     149,   150,   136,   137,   138,   139,     0,   140,     0,     0,
-     141,   142,   143,   274,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   144,   145,   146,   147,   148,     0,
-       0,   134,   135,   149,   150,   136,   137,   138,   139,     0,
-     140,     0,     0,   141,   142,   143,   275,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   144,   145,   146,
-     147,   148,     0,     0,   134,   135,   149,   150,   136,   137,
-     138,   139,     0,   140,     0,     0,   141,   142,   143,     0,
-       0,     0,     0,     0,   201,   202,     0,     0,     0,     0,
-     144,   145,   146,   147,   148,     0,     0,   134,   135,   149,
-     150,   136,   137,   138,   139,     0,   140,     0,     0,   141,
-     142,   143,     0,     0,     0,     0,     0,   344,   202,     0,
-       0,     0,     0,   144,   145,   146,   147,   148,     0,     0,
-     134,   135,   149,   150,   136,   137,   138,   139,     0,   140,
-       0,     0,   141,   142,   143,     0,     0,     0,     0,     0,
-     340,     0,     0,     0,     0,     0,   144,   145,   146,   147,
-     148,     0,     0,   134,   135,   149,   150,   136,   137,   138,
-     139,     0,   140,     0,     0,   141,   142,   143,     0,     0,
-       0,     0,     0,     0,     0,   205,     0,     0,     0,   144,
-     145,   146,   147,   148,     0,     0,   134,   135,   149,   150,
-     136,   137,   138,   139,     0,   140,     0,     0,   141,   142,
-     143,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     179,     0,   144,   145,   146,   147,   148,     0,    66,   134,
-     135,   149,   150,   136,   137,   138,   139,     0,   140,     0,
-       0,   141,   142,   143,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   144,   145,   146,   147,   148,
-       0,     0,   134,   135,   149,   150,   136,   137,   138,   139,
-       0,   140,     0,     0,   141,   142,   143,     0,     0,     0,
-       0,     0,   190,   191,     0,     0,     0,     0,   144,   145,
-     146,   147,   148,     0,     0,   134,   135,   149,   150,   136,
-     137,   138,   139,     0,   140,     0,     0,   141,   142,   143,
+     145,   146,   147,   148,   149,     0,     0,   135,   136,   150,
+     151,   137,   138,   139,   140,     0,   141,     0,     0,   142,
+     143,   144,   278,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
+     135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
+       0,     0,   142,   143,   144,   279,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   145,   146,   147,   148,
+     149,     0,     0,   135,   136,   150,   151,   137,   138,   139,
+     140,     0,   141,     0,     0,   142,   143,   144,     0,     0,
+       0,     0,     0,   203,   204,     0,     0,     0,     0,   145,
+     146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
+     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
+     144,     0,     0,     0,     0,     0,   348,   204,     0,     0,
+       0,     0,   145,   146,   147,   148,   149,     0,     0,   135,
+     136,   150,   151,   137,   138,   139,   140,     0,   141,     0,
+       0,   142,   143,   144,     0,     0,     0,     0,     0,   344,
+       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
+       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
+       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
+       0,     0,     0,     0,   207,     0,     0,     0,   145,   146,
+     147,   148,   149,     0,     0,   135,   136,   150,   151,   137,
+     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   181,
+       0,   145,   146,   147,   148,   149,     0,    67,   135,   136,
+     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
+     142,   143,   144,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   145,   146,   147,   148,   149,     0,
+       0,   135,   136,   150,   151,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
+       0,   192,   193,     0,     0,     0,     0,   145,   146,   147,
+     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   144,   145,   146,   147,   148,     0,     0,     0,   194,
-     149,   150,   134,   135,     0,     0,   136,   137,   138,   139,
-       0,   140,     0,     0,   141,   142,   143,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   144,   145,
-     146,   147,   148,     0,     0,     0,     0,   149,   150
+     145,   146,   147,   148,   149,     0,     0,     0,   196,   150,
+     151,   135,   136,     0,     0,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
+     148,   149,     0,     0,     0,     0,   150,   151
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,     4,     0,    32,     7,     8,     9,    56,    46,    12,
-      13,    14,    15,    31,    36,   295,     1,    13,    21,    15,
-     310,    24,    97,   299,    77,    50,   316,    30,    31,    58,
-      33,    34,    35,    36,    37,    38,    58,    34,    76,   315,
-      43,    44,    45,    46,    54,    83,   326,   100,   101,    97,
-      53,   232,    55,    99,    57,    28,   104,    54,   104,    69,
-      64,   242,    47,    28,    13,    14,    69,    28,    74,    99,
-      73,    77,    54,    76,   104,    78,    94,    73,    81,    28,
-      83,    45,    78,    47,    87,    28,    89,    69,    94,    95,
-     108,    99,    99,    28,   100,   101,   104,   104,   101,    97,
-      99,    56,    57,    74,    28,   104,    77,    28,   203,   103,
-     104,   206,    27,    28,   286,   287,    28,    28,    98,    69,
-      91,    92,    93,    94,    95,   104,    98,   130,   128,   100,
-     101,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,   150,   133,   152,
-     104,    45,    28,   156,    52,    28,   104,   104,    28,   104,
-      28,    28,   165,   167,    28,    28,   169,   170,   104,   172,
-     173,    32,   175,   176,   178,    54,   179,    32,    28,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,    36,
-     285,    28,    58,   196,    32,   104,    32,   201,    32,    28,
-      32,   332,   205,   298,   295,   128,   315,    31,   303,   304,
-     168,   306,    -1,    -1,   263,    -1,    65,    66,    -1,   257,
-      69,    70,   199,   200,    -1,    74,    -1,   322,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,   239,    -1,    -1,    -1,
-     225,    -1,    91,    92,    93,    94,    95,    74,    -1,    -1,
-      77,   100,   101,    -1,   257,    -1,    -1,    -1,   353,   354,
-      -1,    -1,    -1,    -1,   313,    92,    93,    94,    95,   272,
-     273,   274,   275,   100,   101,   324,   279,   281,    -1,    -1,
-      -1,    -1,    -1,    -1,   269,    -1,   271,   264,    -1,   266,
-     293,    -1,    -1,    -1,   298,    -1,    -1,    -1,    -1,    -1,
-      -1,   350,    -1,   280,   308,    -1,    -1,    -1,    -1,   312,
-      -1,    -1,    -1,    -1,    -1,   318,    -1,   294,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   305,    -1,
-      -1,    -1,    -1,   310,   338,    -1,   340,   314,   315,    -1,
-     344,   345,    -1,    -1,    -1,    -1,   323,    -1,    -1,    -1,
-      -1,   328,   352,   353,    -1,    -1,    -1,    -1,   335,    -1,
-     337,    -1,   339,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   358,   359,   360,    12,    13,    14,    15,    -1,    17,
+       0,     4,    31,     0,     7,     8,     9,    56,    46,    12,
+      13,    14,    15,   299,    77,   234,     1,    13,    21,    15,
+     303,    24,    32,    36,    56,    57,   245,    30,    31,    34,
+      33,    34,    35,    36,    37,    38,   319,   100,   101,    77,
+      43,    44,    45,    46,   330,    58,    84,    97,    58,    54,
+      53,    97,    55,    54,    57,    13,    14,   314,   104,    99,
+      54,    65,    47,   320,   104,    98,    95,    70,    69,    28,
+      28,    74,    99,    28,    77,    69,    79,   104,    74,    82,
+     109,    84,    45,    79,    47,    88,    74,    90,    50,    77,
+      74,    99,    28,    77,    74,   205,   104,    77,   208,   102,
+      97,   103,   104,    91,    92,    93,    94,    95,    92,    93,
+      94,    95,   100,   101,    94,    95,   100,   101,    99,    28,
+     100,   101,    99,   104,    27,    28,    28,   104,   131,   129,
+     290,   291,   135,   136,   137,   138,   139,   140,   141,   142,
+     143,   144,   145,   146,   147,   148,   149,   150,   151,   134,
+     153,    28,    28,    28,   157,    28,    69,    98,   104,   104,
+      45,    28,    52,   166,   168,   104,   104,   170,   171,    28,
+     173,   174,    28,   104,   177,   178,   180,    28,   181,   289,
+      69,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,    28,   302,    28,    32,   198,    28,   307,   308,   203,
+     310,    54,    32,   104,   207,    28,    28,    36,    58,   104,
+      28,    32,    32,    32,   336,    32,   326,   266,   129,   299,
+     319,   102,   260,    65,    66,   169,    31,    69,    70,   201,
+     202,    -1,    74,    -1,    -1,    77,    78,    79,   241,   242,
+      -1,    -1,   227,    -1,    -1,    -1,    -1,   357,   358,    91,
+      92,    93,    94,    95,    -1,    -1,    -1,   260,   100,   101,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   317,    -1,
+      -1,    -1,    -1,   276,   277,   278,   279,    -1,    -1,   328,
+     283,   285,    -1,    -1,    -1,    -1,    -1,   272,    -1,    -1,
+     275,    -1,    -1,    -1,   297,   267,    -1,   269,   302,    -1,
+      -1,    -1,    -1,    -1,    -1,   354,    -1,    -1,   312,    -1,
+      -1,    -1,   284,   316,    -1,    -1,    -1,    -1,    -1,   322,
+      -1,    -1,    -1,    -1,    -1,    -1,   298,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   309,   342,    -1,
+     344,    -1,   314,    -1,   348,   349,   318,   319,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   327,   356,   357,    -1,    -1,
+     332,    -1,    -1,    -1,    -1,    -1,    -1,   339,    -1,   341,
+      -1,   343,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     362,   363,   364,    12,    13,    14,    15,    -1,    17,    18,
+      19,    20,    21,    -1,    23,    24,    25,    -1,    27,    28,
+      29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,
+      39,    40,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,
+      49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,
+      59,    60,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,
+      -1,    80,    81,    82,    83,    84,    -1,    -1,    87,    88,
+      89,    90,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
+      -1,    -1,    -1,   102,    12,    13,    14,    15,    -1,    17,
       18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
       28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,
       -1,    39,    40,    41,    -1,    -1,    44,    -1,    -1,    -1,
@@ -1160,19 +1176,19 @@ static const yytype_int16 yycheck[] =
       -1,    59,    60,    61,    62,    -1,    64,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
       -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    87,
-      88,    89,    90,    -1,    92,    93,    -1,    -1,    -1,    97,
+      88,    89,    90,    -1,    92,    93,    -1,    -1,    -1,    -1,
       98,    -1,    -1,    -1,   102,    12,    13,    14,    15,    -1,
       17,    18,    19,    20,    21,    -1,    23,    24,    25,    -1,
-      27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
-      37,    -1,    39,    40,    41,    -1,    -1,    44,    -1,    -1,
+      27,    28,    29,    -1,    31,    32,    33,    -1,    -1,    -1,
+      37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,
-      -1,    -1,    59,    60,    61,    62,    -1,    64,    -1,    -1,
+      -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,
       -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,
-      87,    88,    89,    90,    -1,    92,    93,    -1,    -1,    -1,
-      -1,    98,    -1,    -1,    -1,   102,    12,    13,    14,    15,
+      87,    88,    -1,    90,    -1,    92,    93,    -1,    -1,    -1,
+      97,    98,    -1,    -1,    -1,   102,    12,    13,    14,    15,
       -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
-      -1,    27,    28,    29,    -1,    31,    32,    33,    -1,    -1,
+      -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
       -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
       -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
@@ -1188,117 +1204,108 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
       -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
       -1,    -1,    87,    88,    -1,    90,    -1,    92,    93,    -1,
-      -1,    -1,    97,    98,    -1,    -1,    -1,   102,    12,    13,
+      -1,    -1,    -1,    98,    -1,    -1,    -1,   102,    12,    13,
       14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
-      24,    25,    -1,    27,    28,    29,    -1,    31,    -1,    33,
-      -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
-      -1,    55,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
-      -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
-      84,    -1,    -1,    87,    88,    -1,    90,    -1,    92,    93,
-      -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,   102,    12,
-      13,    14,    15,    -1,    17,    18,    19,    20,    21,    -1,
-      23,    24,    25,    -1,    27,    28,    29,    54,    31,    -1,
-      33,    -1,    -1,    -1,    37,    -1,    39,    40,    65,    66,
-      -1,    -1,    69,    70,    71,    72,    49,    74,    51,    -1,
-      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    61,    62,
-      -1,    64,    -1,    -1,    91,    92,    93,    94,    95,    -1,
-      73,    -1,    -1,   100,   101,    -1,    -1,    80,    81,    82,
-      83,    84,    -1,    -1,    -1,    88,    -1,    90,    -1,    92,
-      93,    12,    13,    14,    15,    98,    -1,    -1,    -1,   102,
-      -1,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
-      31,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,
-      -1,    -1,    43,    -1,    45,    46,    47,    48,    49,    -1,
-      51,    12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
-      31,    -1,    73,    -1,    -1,    -1,    -1,    38,    -1,    80,
-      81,    82,    83,    84,    45,    -1,    47,    -1,    49,    -1,
-      51,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,
-      -1,   102,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,
-      81,    82,    83,    84,    -1,    -1,    -1,    12,    13,    14,
-      15,    92,    93,    -1,    -1,    -1,    -1,    98,    23,    24,
-      25,   102,    27,    28,    29,    -1,    31,    -1,    -1,    -1,
+      24,    25,    -1,    27,    28,    29,    54,    31,    -1,    33,
+      -1,    -1,    -1,    37,    -1,    39,    40,    65,    66,    -1,
+      -1,    69,    70,    71,    72,    49,    74,    51,    -1,    77,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
+      64,    -1,    -1,    91,    92,    93,    94,    95,    -1,    73,
+      -1,    -1,   100,   101,    -1,    -1,    80,    81,    82,    83,
+      84,    -1,    -1,    -1,    88,    -1,    90,    -1,    92,    93,
+      12,    13,    14,    15,    98,    -1,    -1,    -1,   102,    -1,
+      -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
+      -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,
+      -1,    43,    -1,    45,    46,    47,    48,    49,    -1,    51,
+      12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
+      -1,    73,    -1,    -1,    -1,    -1,    38,    -1,    80,    81,
+      82,    83,    84,    45,    -1,    47,    -1,    49,    -1,    51,
+      92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,
+     102,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
+      82,    83,    84,    -1,    -1,    -1,    12,    13,    14,    15,
+      92,    93,    -1,    -1,    -1,    -1,    98,    23,    24,    25,
+     102,    27,    28,    29,    -1,    31,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    49,    -1,    51,    12,    13,    14,
-      15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    24,
-      25,    -1,    27,    28,    29,    -1,    31,    -1,    73,    -1,
-      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      -1,    -1,    -1,    -1,    49,    -1,    51,    92,    93,    -1,
-      -1,    -1,    -1,    98,    -1,    -1,    -1,   102,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
-      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      -1,    -1,    -1,    12,    13,    14,    15,    92,    93,    -1,
-      -1,    -1,    -1,    98,    23,    24,    25,   102,    27,    28,
-      29,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      49,    -1,    51,    12,    13,    14,    15,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    23,    24,    25,    -1,    27,    28,
-      29,    -1,    31,    -1,    73,    -1,    -1,    -1,    -1,    -1,
-      -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,
-      49,    -1,    51,    92,    93,    -1,    -1,    -1,    -1,    98,
-      -1,    -1,    -1,   102,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    73,    -1,    -1,    42,    -1,    -1,
-      -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,
-      65,    66,    -1,   102,    69,    70,    71,    72,    -1,    74,
-      75,    76,    77,    78,    79,    47,    -1,    -1,    -1,    -1,
-      -1,    -1,    54,    -1,    -1,    -1,    91,    92,    93,    94,
-      95,    -1,    -1,    65,    66,   100,   101,    69,    70,    71,
-      72,    -1,    74,    -1,    -1,    77,    78,    79,    47,    -1,
-      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    91,
-      92,    93,    94,    95,    -1,    -1,    65,    66,   100,   101,
-      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,
-      -1,    -1,    91,    92,    93,    94,    95,    -1,    -1,    65,
-      66,   100,   101,    69,    70,    71,    72,    -1,    74,    -1,
-      -1,    77,    78,    79,    47,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    49,    -1,    51,    12,    13,    14,    15,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    24,    25,
+      -1,    27,    28,    29,    -1,    31,    -1,    73,    -1,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
+      -1,    -1,    -1,    49,    -1,    51,    92,    93,    -1,    -1,
+      -1,    -1,    98,    -1,    -1,    -1,   102,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
+      -1,    -1,    12,    13,    14,    15,    92,    93,    -1,    -1,
+      -1,    -1,    98,    23,    24,    25,   102,    27,    28,    29,
+      -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
+      -1,    51,    12,    13,    14,    15,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    23,    24,    25,    -1,    27,    28,    29,
+      -1,    31,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,    49,
+      -1,    51,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,
+      -1,    -1,   102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    73,    -1,    -1,    42,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,    65,
+      66,    -1,   102,    69,    70,    71,    72,    -1,    74,    75,
+      76,    77,    78,    79,    47,    -1,    -1,    -1,    -1,    -1,
       -1,    54,    -1,    -1,    -1,    91,    92,    93,    94,    95,
       -1,    -1,    65,    66,   100,   101,    69,    70,    71,    72,
       -1,    74,    -1,    -1,    77,    78,    79,    47,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
+      -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    91,    92,
       93,    94,    95,    -1,    -1,    65,    66,   100,   101,    69,
       70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
-      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,
       -1,    91,    92,    93,    94,    95,    -1,    -1,    65,    66,
      100,   101,    69,    70,    71,    72,    -1,    74,    -1,    -1,
       77,    78,    79,    47,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
+      54,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
       -1,    65,    66,   100,   101,    69,    70,    71,    72,    -1,
       74,    -1,    -1,    77,    78,    79,    47,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,
       94,    95,    -1,    -1,    65,    66,   100,   101,    69,    70,
-      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
-      -1,    -1,    -1,    -1,    52,    53,    -1,    -1,    -1,    -1,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    47,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       91,    92,    93,    94,    95,    -1,    -1,    65,    66,   100,
      101,    69,    70,    71,    72,    -1,    74,    -1,    -1,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    52,    53,    -1,
+      78,    79,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,    -1,
       65,    66,   100,   101,    69,    70,    71,    72,    -1,    74,
-      -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      52,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
+      -1,    -1,    77,    78,    79,    47,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
       95,    -1,    -1,    65,    66,   100,   101,    69,    70,    71,
       72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    91,
+      -1,    -1,    -1,    52,    53,    -1,    -1,    -1,    -1,    91,
       92,    93,    94,    95,    -1,    -1,    65,    66,   100,   101,
       69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      56,    -1,    91,    92,    93,    94,    95,    -1,    97,    65,
+      79,    -1,    -1,    -1,    -1,    -1,    52,    53,    -1,    -1,
+      -1,    -1,    91,    92,    93,    94,    95,    -1,    -1,    65,
       66,   100,   101,    69,    70,    71,    72,    -1,    74,    -1,
-      -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    52,
       -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,
       -1,    -1,    65,    66,   100,   101,    69,    70,    71,    72,
       -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    91,    92,
+      -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    91,    92,
       93,    94,    95,    -1,    -1,    65,    66,   100,   101,    69,
       70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,
+      -1,    91,    92,    93,    94,    95,    -1,    97,    65,    66,
+     100,   101,    69,    70,    71,    72,    -1,    74,    -1,    -1,
+      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
+      -1,    65,    66,   100,   101,    69,    70,    71,    72,    -1,
+      74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
+      -1,    85,    86,    -1,    -1,    -1,    -1,    91,    92,    93,
+      94,    95,    -1,    -1,    65,    66,   100,   101,    69,    70,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    91,    92,    93,    94,    95,    -1,    -1,    -1,    99,
-     100,   101,    65,    66,    -1,    -1,    69,    70,    71,    72,
-      -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
-      93,    94,    95,    -1,    -1,    -1,    -1,   100,   101
+      91,    92,    93,    94,    95,    -1,    -1,    -1,    99,   100,
+     101,    65,    66,    -1,    -1,    69,    70,    71,    72,    -1,
+      74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,
+      94,    95,    -1,    -1,    -1,    -1,   100,   101
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1311,37 +1318,37 @@ static const yytype_uint8 yystos[] =
       61,    62,    64,    73,    80,    81,    82,    83,    84,    87,
       88,    89,    90,    92,    93,    98,   102,   106,   111,   112,
      113,   114,   115,   121,   122,   123,   128,   129,   130,   131,
-     132,   136,   139,   141,   144,   148,    97,   107,    28,    49,
-     130,   130,   130,    98,   130,   150,    28,   130,    98,   150,
-     130,    98,   150,   140,    50,    28,   133,    38,    43,    45,
-      46,    47,    48,   130,   137,   138,    28,   130,    56,    57,
-      13,    14,    28,    28,    28,    28,   130,    63,   137,   138,
-      28,   135,   130,   130,   130,   130,   130,   130,    28,   134,
-      28,    98,   130,   130,   130,   130,   149,     0,   107,   130,
-      69,   130,   113,   130,    65,    66,    69,    70,    71,    72,
-      74,    77,    78,    79,    91,    92,    93,    94,    95,   100,
-     101,   125,    98,   130,   130,   150,   104,   149,   150,   130,
-     149,   149,   104,   130,   130,    45,   138,   142,    42,    75,
-      76,    28,    54,    69,   130,    54,    69,    52,   143,    56,
-     138,   104,    47,    54,    47,    54,    47,    54,    47,    54,
-      85,    86,   104,    28,    99,   103,   104,   111,   125,   127,
-     130,    52,    53,   108,   126,    54,   107,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,    28,   145,    99,   130,    99,    99,
-      28,   130,   125,    28,   131,   130,   130,   130,   130,    54,
-     130,   130,   125,   130,    28,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,    28,    99,   104,   130,   107,
-     114,   126,   126,   125,   127,   130,   127,   104,   107,   145,
-     130,   145,    47,    47,    47,    47,   149,    32,    34,    54,
-     113,   126,   126,    28,   104,   147,   107,   107,   130,   130,
-     130,   130,    99,    54,   130,   126,    32,    58,   109,   125,
-      32,    28,   127,   147,   147,   130,   126,    36,   109,   110,
-     118,   119,   124,   125,   127,   117,   118,   120,   124,    32,
-     127,   127,   126,   127,   125,   119,   126,   130,   113,   126,
-     120,   126,   130,    28,   146,   127,   126,   113,   109,   116,
-      52,   126,    32,    32,    52,   108,   104,   126,    32,   126,
-     125,   126,   125,   125,   125,    28,    32,   113,   114,   127,
-     127,   126,   126,   126
+     132,   133,   137,   140,   142,   145,   149,    97,   107,    28,
+      49,   131,   131,   131,    98,   131,   151,    28,   131,    98,
+     151,   131,    98,   151,   141,    50,    28,   134,    38,    43,
+      45,    46,    47,    48,   131,   138,   139,    28,   131,    56,
+      57,    13,    14,    28,    28,    28,    28,   131,    63,   138,
+     139,    28,   136,   131,   131,   131,   131,   131,   131,    28,
+     135,    28,    98,   131,   131,   131,   131,   150,     0,   107,
+     131,    69,   131,   113,   131,    65,    66,    69,    70,    71,
+      72,    74,    77,    78,    79,    91,    92,    93,    94,    95,
+     100,   101,   125,    98,   131,   131,   151,   104,   150,   151,
+     131,   150,   150,   104,   131,   131,    45,   139,   143,    42,
+      75,    76,    28,    54,    69,   130,   131,    54,    69,    52,
+     144,    56,   139,   104,    47,    54,    47,    54,    47,    54,
+      47,    54,    85,    86,   104,    28,    99,   103,   104,   111,
+     125,   127,   131,    52,    53,   108,   126,    54,   107,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,    28,   146,    99,   131,
+      99,    99,    28,   131,   125,    28,   132,   131,   131,   131,
+     131,    69,    54,   131,   131,   125,   131,    28,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,    28,    99,
+     104,   131,   107,   114,   126,   126,   125,   127,   131,   127,
+     104,   107,   146,   131,   131,   146,    47,    47,    47,    47,
+     150,    32,    34,    54,   113,   126,   126,    28,   104,   148,
+     107,   107,   131,   131,   131,   131,    99,    54,   131,   126,
+      32,    58,   109,   125,    32,    28,   127,   148,   148,   131,
+     126,    36,   109,   110,   118,   119,   124,   125,   127,   117,
+     118,   120,   124,    32,   127,   127,   126,   127,   125,   119,
+     126,   131,   113,   126,   120,   126,   131,    28,   147,   127,
+     126,   113,   109,   116,    52,   126,    32,    32,    52,   108,
+     104,   126,    32,   126,   125,   126,   125,   125,   125,    28,
+      32,   113,   114,   127,   127,   126,   126,   126
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2267,8 +2274,18 @@ yyreduce:
 		(yyval.code) = (yyvsp[(5) - (5)].code); ;}
     break;
 
-  case 26:
-#line 206 "engines/director/lingo/lingo-gr.y"
+  case 21:
+#line 193 "engines/director/lingo/lingo-gr.y"
+    {
+		g_lingo->code1(g_lingo->c_swap);
+		g_lingo->code1(g_lingo->c_theentityassign);
+		g_lingo->codeInt((yyvsp[(2) - (5)].e)[0]);
+		g_lingo->codeInt((yyvsp[(2) - (5)].e)[1]);
+		(yyval.code) = (yyvsp[(5) - (5)].code); ;}
+    break;
+
+  case 27:
+#line 212 "engines/director/lingo/lingo-gr.y"
     {
 		inst body = 0, end = 0;
 		WRITE_UINT32(&body, (yyvsp[(3) - (5)].code) - (yyvsp[(1) - (5)].code));
@@ -2279,8 +2296,8 @@ yyreduce:
 		checkEnd((yyvsp[(5) - (5)].s), "repeat", true); ;}
     break;
 
-  case 27:
-#line 219 "engines/director/lingo/lingo-gr.y"
+  case 28:
+#line 225 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2297,8 +2314,8 @@ yyreduce:
 		checkEnd((yyvsp[(10) - (10)].s), "repeat", true); ;}
     break;
 
-  case 28:
-#line 237 "engines/director/lingo/lingo-gr.y"
+  case 29:
+#line 243 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (11)].code) - (yyvsp[(1) - (11)].code));
@@ -2315,8 +2332,8 @@ yyreduce:
 		checkEnd((yyvsp[(11) - (11)].s), "repeat", true); ;}
     break;
 
-  case 29:
-#line 251 "engines/director/lingo/lingo-gr.y"
+  case 30:
+#line 257 "engines/director/lingo/lingo-gr.y"
     {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[(3) - (3)].code) - (yyvsp[(1) - (3)].code));
@@ -2324,22 +2341,22 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[(1) - (3)].code) + 1] = end; ;}
     break;
 
-  case 30:
-#line 256 "engines/director/lingo/lingo-gr.y"
+  case 31:
+#line 262 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 			checkEnd((yyvsp[(6) - (6)].s), "tell", true); ;}
     break;
 
-  case 31:
-#line 259 "engines/director/lingo/lingo-gr.y"
+  case 32:
+#line 265 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 		;}
     break;
 
-  case 32:
-#line 264 "engines/director/lingo/lingo-gr.y"
+  case 33:
+#line 270 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2352,8 +2369,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 33:
-#line 274 "engines/director/lingo/lingo-gr.y"
+  case 34:
+#line 280 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2368,8 +2385,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 34:
-#line 286 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 292 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2384,8 +2401,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(8) - (9)].code) - (yyvsp[(1) - (9)].code)); ;}
     break;
 
-  case 35:
-#line 298 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 304 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2398,8 +2415,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(9) - (9)].code) - (yyvsp[(1) - (9)].code)); ;}
     break;
 
-  case 36:
-#line 308 "engines/director/lingo/lingo-gr.y"
+  case 37:
+#line 314 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2412,8 +2429,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(10) - (10)].code) - (yyvsp[(1) - (10)].code)); ;}
     break;
 
-  case 37:
-#line 318 "engines/director/lingo/lingo-gr.y"
+  case 38:
+#line 324 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2426,8 +2443,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 38:
-#line 328 "engines/director/lingo/lingo-gr.y"
+  case 39:
+#line 334 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2440,18 +2457,18 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 39:
-#line 340 "engines/director/lingo/lingo-gr.y"
+  case 40:
+#line 346 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = 0; ;}
     break;
 
-  case 40:
-#line 341 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 347 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 45:
-#line 352 "engines/director/lingo/lingo-gr.y"
+  case 46:
+#line 358 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2460,8 +2477,8 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 47:
-#line 361 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 367 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2470,8 +2487,8 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 48:
-#line 367 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 373 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2480,13 +2497,13 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 49:
-#line 375 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 381 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
-  case 50:
-#line 378 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 384 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2494,8 +2511,8 @@ yyreduce:
 		delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 51:
-#line 385 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 391 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2503,8 +2520,8 @@ yyreduce:
 		g_lingo->codeLabel(0); ;}
     break;
 
-  case 52:
-#line 392 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 398 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2513,23 +2530,23 @@ yyreduce:
 		g_lingo->code1(skipEnd); ;}
     break;
 
-  case 53:
-#line 400 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 406 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 54:
-#line 403 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 409 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 55:
-#line 406 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 412 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 58:
-#line 411 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 417 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
@@ -2537,82 +2554,87 @@ yyreduce:
 		delete (yyvsp[(2) - (3)].s); ;}
     break;
 
-  case 59:
-#line 417 "engines/director/lingo/lingo-gr.y"
+  case 60:
+#line 423 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_tellcode);
 		g_lingo->code1(STOP); ;}
     break;
 
-  case 60:
-#line 421 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 427 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt((yyvsp[(1) - (1)].i)); ;}
     break;
 
-  case 61:
-#line 424 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 430 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_floatpush);
 		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
-  case 62:
-#line 427 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 433 "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 63:
-#line 430 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 436 "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 65:
-#line 434 "engines/director/lingo/lingo-gr.y"
+#line 439 "engines/director/lingo/lingo-gr.y"
     {
-		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
+		(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 66:
-#line 437 "engines/director/lingo/lingo-gr.y"
+#line 445 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = (yyvsp[(1) - (1)].code); ;}
+    break;
+
+  case 68:
+#line 447 "engines/director/lingo/lingo-gr.y"
+    {
+		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
+		delete (yyvsp[(1) - (1)].s); ;}
+    break;
+
+  case 69:
+#line 450 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 67:
-#line 440 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 453 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 68:
-#line 441 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 454 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
-  case 69:
-#line 442 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 455 "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 70:
-#line 445 "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 71:
-#line 449 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 458 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2623,8 +2645,8 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 72:
-#line 457 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 466 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
@@ -2633,395 +2655,395 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 74:
-#line 464 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 473 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_add); ;}
     break;
 
-  case 75:
-#line 465 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 474 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_sub); ;}
     break;
 
-  case 76:
-#line 466 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 475 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
-  case 77:
-#line 467 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 476 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
-  case 78:
-#line 468 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 477 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
-  case 79:
-#line 469 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 478 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
-  case 80:
-#line 470 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 479 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
-  case 81:
-#line 471 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 480 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_eq); ;}
     break;
 
-  case 82:
-#line 472 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 481 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
-  case 83:
-#line 473 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 482 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
-  case 84:
-#line 474 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 483 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
-  case 85:
-#line 475 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 484 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
-  case 86:
-#line 476 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 485 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
-  case 87:
-#line 477 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 486 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
-  case 88:
-#line 478 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 487 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
-  case 89:
-#line 479 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 488 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
-  case 90:
-#line 480 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 489 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
-  case 91:
-#line 481 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 490 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
-  case 92:
-#line 482 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 491 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
-  case 93:
-#line 483 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 492 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
-  case 94:
-#line 484 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 493 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 95:
-#line 485 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 494 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_arraypush); g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
-  case 96:
-#line 486 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 495 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
-  case 97:
-#line 487 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 496 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
-  case 98:
-#line 488 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 497 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
-  case 99:
-#line 489 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 498 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
-  case 100:
-#line 490 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 499 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
-  case 101:
-#line 491 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 500 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
-  case 102:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 501 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
-  case 103:
-#line 493 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 502 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
-  case 104:
-#line 494 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 503 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
-  case 105:
-#line 495 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 504 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
-  case 106:
-#line 498 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 507 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 107:
-#line 503 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 512 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
-  case 110:
-#line 506 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 515 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
-  case 111:
-#line 507 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 516 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
-  case 115:
-#line 511 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 520 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 116:
-#line 514 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 523 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 117:
-#line 517 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 526 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 118:
-#line 520 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 529 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_voidpush);
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 1);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 119:
-#line 524 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 533 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 120:
-#line 525 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 534 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
-  case 121:
-#line 526 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 535 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
-  case 122:
-#line 527 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 536 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
-  case 123:
-#line 528 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 537 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
-  case 124:
-#line 529 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 538 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
-  case 125:
-#line 530 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 539 "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 126:
-#line 533 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 542 "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 127:
-#line 534 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 543 "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 128:
-#line 537 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 546 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 129:
-#line 538 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 547 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 130:
-#line 541 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 550 "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 131:
-#line 542 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 551 "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 132:
-#line 553 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 562 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
-  case 133:
-#line 554 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 563 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
-  case 134:
-#line 555 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 564 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
-  case 135:
-#line 556 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 565 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 136:
-#line 560 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 569 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 137:
-#line 564 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 573 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 142:
-#line 578 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 587 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
-  case 143:
-#line 579 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 588 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 144:
-#line 583 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 592 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 145:
-#line 587 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 596 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 146:
-#line 591 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 600 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
-  case 147:
-#line 591 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 600 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 148:
-#line 621 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 630 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 149:
-#line 622 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 631 "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));
 			g_lingo->_indef = false; ;}
     break;
 
-  case 150:
-#line 626 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 635 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFactory(*(yyvsp[(2) - (2)].s)); ;}
     break;
 
-  case 151:
-#line 627 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 636 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
-  case 152:
-#line 628 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 637 "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 153:
-#line 632 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 641 "engines/director/lingo/lingo-gr.y"
     {	// D3
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*(yyvsp[(1) - (8)].s), (yyvsp[(2) - (8)].code), (yyvsp[(3) - (8)].narg));
@@ -3031,8 +3053,8 @@ yyreduce:
 		checkEnd((yyvsp[(7) - (8)].s), (yyvsp[(1) - (8)].s)->c_str(), false); ;}
     break;
 
-  case 154:
-#line 639 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 648 "engines/director/lingo/lingo-gr.y"
     {	// D4. No 'end' clause
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*(yyvsp[(1) - (6)].s), (yyvsp[(2) - (6)].code), (yyvsp[(3) - (6)].narg));
@@ -3040,38 +3062,38 @@ yyreduce:
 		g_lingo->_ignoreMe = false; ;}
     break;
 
-  case 155:
-#line 645 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 654 "engines/director/lingo/lingo-gr.y"
     { (yyval.s) = (yyvsp[(2) - (2)].s); g_lingo->_indef = true; g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; ;}
     break;
 
-  case 156:
-#line 647 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 656 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 157:
-#line 648 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 657 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
-  case 158:
-#line 649 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 658 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 159:
-#line 650 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 659 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 163:
-#line 658 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 667 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
-  case 164:
-#line 662 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 671 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -3080,34 +3102,34 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 165:
-#line 670 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 679 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 166:
-#line 671 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 680 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 167:
-#line 672 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 681 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 168:
-#line 675 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 684 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 169:
-#line 676 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 685 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3111 "engines/director/lingo/lingo-gr.cpp"
+#line 3133 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3321,6 +3343,6 @@ yyreturn:
 }
 
 
-#line 679 "engines/director/lingo/lingo-gr.y"
+#line 688 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 1703cfb..53e313d 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -104,7 +104,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
-%type<code> repeatwith stmtlist tell reference
+%type<code> repeatwith stmtlist tell reference simpleexpr
 %type<narg> argdef arglist nonemptyarglist
 %type<s> on
 
@@ -190,6 +190,12 @@ asgn: tPUT expr tINTO ID 		{
 		g_lingo->codeInt($2[0]);
 		g_lingo->codeInt($2[1]);
 		$$ = $5; }
+	| tSET THEENTITYWITHID simpleexpr tEQ expr	{
+		g_lingo->code1(g_lingo->c_swap);
+		g_lingo->code1(g_lingo->c_theentityassign);
+		g_lingo->codeInt($2[0]);
+		g_lingo->codeInt($2[1]);
+		$$ = $5; }
 	;
 
 stmtoneliner: macro
@@ -418,7 +424,7 @@ tell:	  tTELL				{
 		$$ = g_lingo->code1(g_lingo->c_tellcode);
 		g_lingo->code1(STOP); }
 
-expr: INT		{
+simpleexpr: INT		{
 		$$ = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt($1); }
 	| FLOAT		{
@@ -430,6 +436,13 @@ expr: INT		{
 	| STRING		{
 		$$ = g_lingo->code1(g_lingo->c_stringpush);
 		g_lingo->codeString($1->c_str()); }
+	| ID		{
+		$$ = g_lingo->code1(g_lingo->c_eval);
+		g_lingo->codeString($1->c_str());
+		delete $1; }
+	;
+
+expr: simpleexpr { $$ = $1; }
 	| reference
 	| FBLTINNOARGS 	{
 		g_lingo->codeFunc($1, 0);
@@ -442,10 +455,6 @@ expr: INT		{
 	| ID '(' arglist ')'	{
 		$$ = g_lingo->codeFunc($1, $3);
 		delete $1; }
-	| ID		{
-		$$ = g_lingo->code1(g_lingo->c_eval);
-		g_lingo->codeString($1->c_str());
-		delete $1; }
 	| THEENTITY	{
 		$$ = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
diff --git a/engines/director/lingo/tests/the.lingo b/engines/director/lingo/tests/the.lingo
index 8110c9d..5e0432e 100644
--- a/engines/director/lingo/tests/the.lingo
+++ b/engines/director/lingo/tests/the.lingo
@@ -14,3 +14,4 @@ set a = 5
 
 set gravityConst = the value of ( the text of cast A14)
 set the hilite of cast A32 to (a = 3)
+set the text of cast A14 = string( gravityConst )




More information about the Scummvm-git-logs mailing list