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

sev- sev at scummvm.org
Wed Mar 29 22:17:35 CEST 2017


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

Summary:
74e923d42a DIRECTOR: Lingo: Added tTHENNL token
e135dad5ac DIRECTOR: Lingo: Added another if statement variant


Commit: 74e923d42a36f1a20ebc2610e08402b1ae4c0fe5
    https://github.com/scummvm/scummvm/commit/74e923d42a36f1a20ebc2610e08402b1ae4c0fe5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-29T22:17:18+02:00

Commit Message:
DIRECTOR: Lingo: Added tTHENNL token

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.h
    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 4e6d8a0..a409256 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -116,43 +116,44 @@
      tREPEAT = 305,
      tSET = 306,
      tTHEN = 307,
-     tTO = 308,
-     tWHEN = 309,
-     tWITH = 310,
-     tWHILE = 311,
-     tNLELSE = 312,
-     tFACTORY = 313,
-     tMETHOD = 314,
-     tOPEN = 315,
-     tPLAY = 316,
-     tDONE = 317,
-     tINSTANCE = 318,
-     tGE = 319,
-     tLE = 320,
-     tGT = 321,
-     tLT = 322,
-     tEQ = 323,
-     tNEQ = 324,
-     tAND = 325,
-     tOR = 326,
-     tNOT = 327,
-     tMOD = 328,
-     tAFTER = 329,
-     tBEFORE = 330,
-     tCONCAT = 331,
-     tCONTAINS = 332,
-     tSTARTS = 333,
-     tCHAR = 334,
-     tITEM = 335,
-     tLINE = 336,
-     tWORD = 337,
-     tSPRITE = 338,
-     tINTERSECTS = 339,
-     tWITHIN = 340,
-     tTELL = 341,
-     tPROPERTY = 342,
-     tON = 343,
-     tME = 344
+     tTHENNL = 308,
+     tTO = 309,
+     tWHEN = 310,
+     tWITH = 311,
+     tWHILE = 312,
+     tNLELSE = 313,
+     tFACTORY = 314,
+     tMETHOD = 315,
+     tOPEN = 316,
+     tPLAY = 317,
+     tDONE = 318,
+     tINSTANCE = 319,
+     tGE = 320,
+     tLE = 321,
+     tGT = 322,
+     tLT = 323,
+     tEQ = 324,
+     tNEQ = 325,
+     tAND = 326,
+     tOR = 327,
+     tNOT = 328,
+     tMOD = 329,
+     tAFTER = 330,
+     tBEFORE = 331,
+     tCONCAT = 332,
+     tCONTAINS = 333,
+     tSTARTS = 334,
+     tCHAR = 335,
+     tITEM = 336,
+     tLINE = 337,
+     tWORD = 338,
+     tSPRITE = 339,
+     tINTERSECTS = 340,
+     tWITHIN = 341,
+     tTELL = 342,
+     tPROPERTY = 343,
+     tON = 344,
+     tME = 345
    };
 #endif
 /* Tokens.  */
@@ -206,43 +207,44 @@
 #define tREPEAT 305
 #define tSET 306
 #define tTHEN 307
-#define tTO 308
-#define tWHEN 309
-#define tWITH 310
-#define tWHILE 311
-#define tNLELSE 312
-#define tFACTORY 313
-#define tMETHOD 314
-#define tOPEN 315
-#define tPLAY 316
-#define tDONE 317
-#define tINSTANCE 318
-#define tGE 319
-#define tLE 320
-#define tGT 321
-#define tLT 322
-#define tEQ 323
-#define tNEQ 324
-#define tAND 325
-#define tOR 326
-#define tNOT 327
-#define tMOD 328
-#define tAFTER 329
-#define tBEFORE 330
-#define tCONCAT 331
-#define tCONTAINS 332
-#define tSTARTS 333
-#define tCHAR 334
-#define tITEM 335
-#define tLINE 336
-#define tWORD 337
-#define tSPRITE 338
-#define tINTERSECTS 339
-#define tWITHIN 340
-#define tTELL 341
-#define tPROPERTY 342
-#define tON 343
-#define tME 344
+#define tTHENNL 308
+#define tTO 309
+#define tWHEN 310
+#define tWITH 311
+#define tWHILE 312
+#define tNLELSE 313
+#define tFACTORY 314
+#define tMETHOD 315
+#define tOPEN 316
+#define tPLAY 317
+#define tDONE 318
+#define tINSTANCE 319
+#define tGE 320
+#define tLE 321
+#define tGT 322
+#define tLT 323
+#define tEQ 324
+#define tNEQ 325
+#define tAND 326
+#define tOR 327
+#define tNOT 328
+#define tMOD 329
+#define tAFTER 330
+#define tBEFORE 331
+#define tCONCAT 332
+#define tCONTAINS 333
+#define tSTARTS 334
+#define tCHAR 335
+#define tITEM 336
+#define tLINE 337
+#define tWORD 338
+#define tSPRITE 339
+#define tINTERSECTS 340
+#define tWITHIN 341
+#define tTELL 342
+#define tPROPERTY 343
+#define tON 344
+#define tME 345
 
 
 
@@ -310,7 +312,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 193 of yacc.c.  */
-#line 314 "engines/director/lingo/lingo-gr.cpp"
+#line 316 "engines/director/lingo/lingo-gr.cpp"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -323,7 +325,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 327 "engines/director/lingo/lingo-gr.cpp"
+#line 329 "engines/director/lingo/lingo-gr.cpp"
 
 #ifdef short
 # undef short
@@ -538,10 +540,10 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  124
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1878
+#define YYLAST   1822
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  105
+#define YYNTOKENS  106
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  43
 /* YYNRULES -- Number of rules.  */
@@ -551,7 +553,7 @@ union yyalloc
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   344
+#define YYMAXUTOK   345
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -560,15 +562,15 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      97,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      98,     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,    96,    91,     2,
-      98,    99,    94,    92,   104,    93,     2,    95,     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,     2,     2,     2,
-     101,    90,   100,     2,     2,     2,     2,     2,     2,     2,
+     102,    91,   101,     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,   102,     2,   103,     2,     2,     2,     2,     2,     2,
+       2,   103,     2,   104,     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,
@@ -593,7 +595,7 @@ static const yytype_uint8 yytranslate[] =
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89
+      85,    86,    87,    88,    89,    90
 };
 
 #if YYDEBUG
@@ -604,89 +606,88 @@ static const yytype_uint16 yyprhs[] =
        0,     0,     3,     7,     9,    12,    14,    15,    17,    19,
       21,    26,    31,    36,    41,    46,    51,    57,    62,    67,
       73,    75,    77,    79,    81,    89,   100,   112,   116,   123,
-     128,   136,   147,   158,   165,   176,   187,   188,   192,   195,
-     197,   200,   202,   209,   211,   218,   220,   224,   228,   231,
-     235,   237,   239,   240,   241,   242,   245,   248,   252,   254,
-     256,   258,   260,   262,   264,   267,   270,   275,   280,   282,
-     284,   287,   289,   293,   297,   301,   305,   309,   313,   317,
-     321,   325,   329,   333,   337,   340,   344,   348,   352,   356,
-     359,   362,   366,   370,   375,   380,   385,   392,   397,   404,
-     409,   416,   421,   428,   431,   434,   436,   438,   441,   443,
-     446,   449,   452,   454,   457,   460,   462,   465,   470,   475,
-     482,   487,   490,   494,   496,   500,   502,   506,   508,   512,
-     515,   518,   521,   524,   528,   531,   534,   536,   540,   543,
-     546,   549,   553,   556,   557,   561,   562,   571,   574,   575,
-     584,   592,   599,   602,   603,   605,   609,   614,   615,   618,
-     619,   621,   625,   627
+     128,   135,   145,   155,   162,   173,   184,   185,   189,   192,
+     194,   197,   199,   206,   208,   215,   217,   221,   225,   228,
+     232,   234,   236,   237,   238,   239,   242,   245,   249,   251,
+     253,   255,   257,   259,   261,   264,   267,   272,   277,   279,
+     281,   284,   286,   290,   294,   298,   302,   306,   310,   314,
+     318,   322,   326,   330,   334,   337,   341,   345,   349,   353,
+     356,   359,   363,   367,   372,   377,   382,   389,   394,   401,
+     406,   413,   418,   425,   428,   431,   433,   435,   438,   440,
+     443,   446,   449,   451,   454,   457,   459,   462,   467,   472,
+     479,   484,   487,   491,   493,   497,   499,   503,   505,   509,
+     512,   515,   518,   521,   525,   528,   531,   533,   537,   540,
+     543,   546,   550,   553,   554,   558,   559,   568,   571,   572,
+     581,   589,   596,   599,   600,   602,   606,   611,   612,   615,
+     616,   618,   622,   624
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     106,     0,    -1,   106,   107,   108,    -1,   108,    -1,     1,
-     107,    -1,    97,    -1,    -1,   139,    -1,   145,    -1,   111,
-      -1,    49,   128,    42,    28,    -1,    49,   128,    42,   129,
-      -1,    49,   128,    74,   128,    -1,    49,   128,    75,   128,
-      -1,    51,    28,    90,   128,    -1,    51,    13,    90,   128,
-      -1,    51,    14,   128,    90,   128,    -1,    51,    28,    53,
-     128,    -1,    51,    13,    53,   128,    -1,    51,    14,   128,
-      53,   128,    -1,   128,    -1,   130,    -1,   110,    -1,   112,
-      -1,   119,    98,   118,    99,   125,   124,    32,    -1,   120,
-      90,   128,   124,    53,   128,   124,   125,   124,    32,    -1,
-     120,    90,   128,   124,    34,    53,   128,   124,   125,   124,
-      32,    -1,   126,   110,   124,    -1,   127,   128,   107,   125,
-     124,    32,    -1,   127,   128,    53,   128,    -1,   121,   118,
-      52,   107,   125,   124,    32,    -1,   121,   118,    52,   107,
-     125,   124,    57,   125,   124,    32,    -1,   121,   118,    52,
-     107,   125,   124,   123,   114,   124,    32,    -1,   121,   118,
-      52,   123,   110,   124,    -1,   121,   118,    52,   123,   110,
-     124,    57,   123,   110,   124,    -1,   121,   118,    52,   123,
-     110,   124,   115,   124,   113,   124,    -1,    -1,    57,   123,
-     110,    -1,   114,   117,    -1,   117,    -1,   115,   116,    -1,
-     116,    -1,   122,   118,    52,   123,   111,   124,    -1,   115,
-      -1,   122,   118,    52,   123,   125,   124,    -1,   128,    -1,
-     128,    90,   128,    -1,    98,   118,    99,    -1,    50,    56,
-      -1,    50,    55,    28,    -1,    41,    -1,    36,    -1,    -1,
-      -1,    -1,   125,   107,    -1,   125,   111,    -1,    54,    28,
-      52,    -1,    86,    -1,    12,    -1,    15,    -1,    31,    -1,
-      29,    -1,    23,    -1,    24,   128,    -1,    25,   147,    -1,
-      25,    98,   147,    99,    -1,    28,    98,   146,    99,    -1,
-      28,    -1,    13,    -1,    14,   128,    -1,   109,    -1,   128,
-      92,   128,    -1,   128,    93,   128,    -1,   128,    94,   128,
-      -1,   128,    95,   128,    -1,   128,    73,   128,    -1,   128,
-     100,   128,    -1,   128,   101,   128,    -1,   128,    69,   128,
-      -1,   128,    64,   128,    -1,   128,    65,   128,    -1,   128,
-      70,   128,    -1,   128,    71,   128,    -1,    72,   128,    -1,
-     128,    91,   128,    -1,   128,    76,   128,    -1,   128,    77,
-     128,    -1,   128,    78,   128,    -1,    92,   128,    -1,    93,
-     128,    -1,    98,   128,    99,    -1,   102,   146,   103,    -1,
-      83,   128,    84,   128,    -1,    83,   128,    85,   128,    -1,
-      79,   128,    47,   128,    -1,    79,   128,    53,   128,    47,
-     128,    -1,    80,   128,    47,   128,    -1,    80,   128,    53,
-     128,    47,   128,    -1,    81,   128,    47,   128,    -1,    81,
-     128,    53,   128,    47,   128,    -1,    82,   128,    47,   128,
-      -1,    82,   128,    53,   128,    47,   128,    -1,    27,   128,
-      -1,    49,   128,    -1,   134,    -1,   137,    -1,    37,    50,
-      -1,    37,    -1,    39,   131,    -1,    87,   132,    -1,    63,
-     133,    -1,    17,    -1,    19,   128,    -1,    18,   128,    -1,
-      18,    -1,    20,   147,    -1,    20,    98,   147,    99,    -1,
-      89,    98,    28,    99,    -1,    89,    98,    28,   104,   146,
-      99,    -1,    60,   128,    55,   128,    -1,    60,   128,    -1,
-      21,    28,   146,    -1,    28,    -1,   131,   104,    28,    -1,
-      28,    -1,   132,   104,    28,    -1,    28,    -1,   133,   104,
-      28,    -1,    40,    43,    -1,    40,    46,    -1,    40,    48,
-      -1,    40,   135,    -1,    40,   135,   136,    -1,    40,   136,
-      -1,    38,   128,    -1,   128,    -1,    47,    45,   128,    -1,
-      45,   128,    -1,    61,    62,    -1,    61,   135,    -1,    61,
-     135,   136,    -1,    61,   136,    -1,    -1,    33,   138,   146,
-      -1,    -1,    44,    28,   140,   123,   143,   107,   144,   125,
-      -1,    58,    28,    -1,    -1,    59,    28,   141,   123,   143,
-     107,   144,   125,    -1,   142,   123,   143,   107,   144,   125,
-      32,    -1,   142,   123,   143,   107,   144,   125,    -1,    88,
-      28,    -1,    -1,    28,    -1,   143,   104,    28,    -1,   143,
-     107,   104,    28,    -1,    -1,    28,   147,    -1,    -1,   128,
-      -1,   146,   104,   128,    -1,   128,    -1,   147,   104,   128,
-      -1
+     107,     0,    -1,   107,   108,   109,    -1,   109,    -1,     1,
+     108,    -1,    98,    -1,    -1,   140,    -1,   146,    -1,   112,
+      -1,    49,   129,    42,    28,    -1,    49,   129,    42,   130,
+      -1,    49,   129,    75,   129,    -1,    49,   129,    76,   129,
+      -1,    51,    28,    91,   129,    -1,    51,    13,    91,   129,
+      -1,    51,    14,   129,    91,   129,    -1,    51,    28,    54,
+     129,    -1,    51,    13,    54,   129,    -1,    51,    14,   129,
+      54,   129,    -1,   129,    -1,   131,    -1,   111,    -1,   113,
+      -1,   120,    99,   119,   100,   126,   125,    32,    -1,   121,
+      91,   129,   125,    54,   129,   125,   126,   125,    32,    -1,
+     121,    91,   129,   125,    34,    54,   129,   125,   126,   125,
+      32,    -1,   127,   111,   125,    -1,   128,   129,   108,   126,
+     125,    32,    -1,   128,   129,    54,   129,    -1,   122,   119,
+      53,   126,   125,    32,    -1,   122,   119,    53,   126,   125,
+      58,   126,   125,    32,    -1,   122,   119,    53,   126,   125,
+     124,   115,   125,    32,    -1,   122,   119,    52,   124,   111,
+     125,    -1,   122,   119,    52,   124,   111,   125,    58,   124,
+     111,   125,    -1,   122,   119,    52,   124,   111,   125,   116,
+     125,   114,   125,    -1,    -1,    58,   124,   111,    -1,   115,
+     118,    -1,   118,    -1,   116,   117,    -1,   117,    -1,   123,
+     119,    52,   124,   112,   125,    -1,   116,    -1,   123,   119,
+      52,   124,   126,   125,    -1,   129,    -1,   129,    91,   129,
+      -1,    99,   119,   100,    -1,    50,    57,    -1,    50,    56,
+      28,    -1,    41,    -1,    36,    -1,    -1,    -1,    -1,   126,
+     108,    -1,   126,   112,    -1,    55,    28,    52,    -1,    87,
+      -1,    12,    -1,    15,    -1,    31,    -1,    29,    -1,    23,
+      -1,    24,   129,    -1,    25,   148,    -1,    25,    99,   148,
+     100,    -1,    28,    99,   147,   100,    -1,    28,    -1,    13,
+      -1,    14,   129,    -1,   110,    -1,   129,    93,   129,    -1,
+     129,    94,   129,    -1,   129,    95,   129,    -1,   129,    96,
+     129,    -1,   129,    74,   129,    -1,   129,   101,   129,    -1,
+     129,   102,   129,    -1,   129,    70,   129,    -1,   129,    65,
+     129,    -1,   129,    66,   129,    -1,   129,    71,   129,    -1,
+     129,    72,   129,    -1,    73,   129,    -1,   129,    92,   129,
+      -1,   129,    77,   129,    -1,   129,    78,   129,    -1,   129,
+      79,   129,    -1,    93,   129,    -1,    94,   129,    -1,    99,
+     129,   100,    -1,   103,   147,   104,    -1,    84,   129,    85,
+     129,    -1,    84,   129,    86,   129,    -1,    80,   129,    47,
+     129,    -1,    80,   129,    54,   129,    47,   129,    -1,    81,
+     129,    47,   129,    -1,    81,   129,    54,   129,    47,   129,
+      -1,    82,   129,    47,   129,    -1,    82,   129,    54,   129,
+      47,   129,    -1,    83,   129,    47,   129,    -1,    83,   129,
+      54,   129,    47,   129,    -1,    27,   129,    -1,    49,   129,
+      -1,   135,    -1,   138,    -1,    37,    50,    -1,    37,    -1,
+      39,   132,    -1,    88,   133,    -1,    64,   134,    -1,    17,
+      -1,    19,   129,    -1,    18,   129,    -1,    18,    -1,    20,
+     148,    -1,    20,    99,   148,   100,    -1,    90,    99,    28,
+     100,    -1,    90,    99,    28,   105,   147,   100,    -1,    61,
+     129,    56,   129,    -1,    61,   129,    -1,    21,    28,   147,
+      -1,    28,    -1,   132,   105,    28,    -1,    28,    -1,   133,
+     105,    28,    -1,    28,    -1,   134,   105,    28,    -1,    40,
+      43,    -1,    40,    46,    -1,    40,    48,    -1,    40,   136,
+      -1,    40,   136,   137,    -1,    40,   137,    -1,    38,   129,
+      -1,   129,    -1,    47,    45,   129,    -1,    45,   129,    -1,
+      62,    63,    -1,    62,   136,    -1,    62,   136,   137,    -1,
+      62,   137,    -1,    -1,    33,   139,   147,    -1,    -1,    44,
+      28,   141,   124,   144,   108,   145,   126,    -1,    59,    28,
+      -1,    -1,    60,    28,   142,   124,   144,   108,   145,   126,
+      -1,   143,   124,   144,   108,   145,   126,    32,    -1,   143,
+     124,   144,   108,   145,   126,    -1,    89,    28,    -1,    -1,
+      28,    -1,   144,   105,    28,    -1,   144,   108,   105,    28,
+      -1,    -1,    28,   148,    -1,    -1,   129,    -1,   147,   105,
+     129,    -1,   129,    -1,   148,   105,   129,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -725,21 +726,21 @@ static const char *const yytname[] =
   "RBLTINONEARG", "ID", "STRING", "HANDLER", "SYMBOL", "ENDCLAUSE",
   "tPLAYACCEL", "tDOWN", "tELSE", "tNLELSIF", "tEXIT", "tFRAME", "tGLOBAL",
   "tGO", "tIF", "tINTO", "tLOOP", "tMACRO", "tMOVIE", "tNEXT", "tOF",
-  "tPREVIOUS", "tPUT", "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH",
-  "tWHILE", "tNLELSE", "tFACTORY", "tMETHOD", "tOPEN", "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", "programline", "asgn", "stmtoneliner",
-  "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
-  "elseifstmtoneliner1", "elseifstmt1", "cond", "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", "argstore", "macro", "arglist",
-  "nonemptyarglist", 0
+  "tPREVIOUS", "tPUT", "tREPEAT", "tSET", "tTHEN", "tTHENNL", "tTO",
+  "tWHEN", "tWITH", "tWHILE", "tNLELSE", "tFACTORY", "tMETHOD", "tOPEN",
+  "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", "programline",
+  "asgn", "stmtoneliner", "stmt", "ifstmt", "elsestmtoneliner",
+  "elseifstmt", "elseifstmtoneliner", "elseifstmtoneliner1", "elseifstmt1",
+  "cond", "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", "argstore",
+  "macro", "arglist", "nonemptyarglist", 0
 };
 #endif
 
@@ -757,31 +758,31 @@ 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,
-      61,    38,    43,    45,    42,    47,    37,    10,    40,    41,
-      62,    60,    91,    93,    44
+     345,    61,    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,   105,   106,   106,   106,   107,   108,   108,   108,   108,
-     109,   109,   109,   109,   109,   109,   109,   109,   109,   109,
-     110,   110,   111,   111,   111,   111,   111,   111,   111,   111,
-     112,   112,   112,   112,   112,   112,   113,   113,   114,   114,
-     115,   115,   116,   117,   117,   118,   118,   118,   119,   120,
-     121,   122,   123,   124,   125,   125,   125,   126,   127,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   129,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   131,   131,   132,   132,   133,   133,   134,
-     134,   134,   134,   134,   134,   135,   135,   136,   136,   137,
-     137,   137,   137,   138,   137,   140,   139,   139,   141,   139,
-     139,   139,   142,   143,   143,   143,   143,   144,   145,   146,
-     146,   146,   147,   147
+       0,   106,   107,   107,   107,   108,   109,   109,   109,   109,
+     110,   110,   110,   110,   110,   110,   110,   110,   110,   110,
+     111,   111,   112,   112,   112,   112,   112,   112,   112,   112,
+     113,   113,   113,   113,   113,   113,   114,   114,   115,   115,
+     116,   116,   117,   118,   118,   119,   119,   119,   120,   121,
+     122,   123,   124,   125,   126,   126,   126,   127,   128,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   130,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   132,   132,   133,   133,   134,   134,   135,
+     135,   135,   135,   135,   135,   136,   136,   137,   137,   138,
+     138,   138,   138,   139,   138,   141,   140,   140,   142,   140,
+     140,   140,   143,   144,   144,   144,   144,   145,   146,   147,
+     147,   147,   148,   148
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -790,7 +791,7 @@ static const yytype_uint8 yyr2[] =
        0,     2,     3,     1,     2,     1,     0,     1,     1,     1,
        4,     4,     4,     4,     4,     4,     5,     4,     4,     5,
        1,     1,     1,     1,     7,    10,    11,     3,     6,     4,
-       7,    10,    10,     6,    10,    10,     0,     3,     2,     1,
+       6,     9,     9,     6,    10,    10,     0,     3,     2,     1,
        2,     1,     6,     1,     6,     1,     3,     3,     2,     3,
        1,     1,     0,     0,     0,     2,     2,     3,     1,     1,
        1,     1,     1,     1,     2,     2,     4,     4,     1,     1,
@@ -831,85 +832,85 @@ static const yytype_uint8 yydefact[] =
        0,     0,     0,     0,     0,    57,    52,     0,   141,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    91,    92,     0,     2,     0,    53,     0,     0,
-      52,     0,    27,     0,    54,    80,    81,    79,    82,    83,
-      76,    86,    87,    88,    85,    72,    73,    74,    75,    77,
-      78,   154,     0,   117,   163,    66,    67,   124,   137,   153,
-       0,    10,    11,    12,    13,    18,    15,     0,     0,    17,
-      14,   153,   120,   128,    95,     0,    97,     0,    99,     0,
-     101,     0,    93,    94,   126,   118,   159,   161,    54,     0,
-      47,    54,     0,    46,    29,    53,     0,   157,     0,   103,
-      19,    16,     0,     0,     0,     0,     0,     0,    53,     0,
-       0,    53,    53,    55,    56,     0,   155,     0,    54,   157,
-     157,    96,    98,   100,   102,   119,     0,     0,    53,    52,
-      33,    28,   156,   151,    54,    54,    24,    53,    54,    30,
-      54,     0,    51,    52,    53,    41,     0,   150,   146,   149,
-      54,    53,    53,    53,    43,    39,     0,     0,    40,    36,
-       0,    53,     0,     0,    38,     0,     0,    53,    52,    53,
-      52,     0,    25,    31,    32,    52,    34,     0,    35,     0,
-      26,    54,    37,    53,    53,    42,    44
+      52,    54,     0,    27,     0,    54,    80,    81,    79,    82,
+      83,    76,    86,    87,    88,    85,    72,    73,    74,    75,
+      77,    78,   154,     0,   117,   163,    66,    67,   124,   137,
+     153,     0,    10,    11,    12,    13,    18,    15,     0,     0,
+      17,    14,   153,   120,   128,    95,     0,    97,     0,    99,
+       0,   101,     0,    93,    94,   126,   118,   159,   161,    54,
+       0,    47,     0,    53,    46,    29,    53,     0,   157,     0,
+     103,    19,    16,     0,     0,     0,     0,     0,     0,    53,
+       0,     0,    53,    55,    56,    52,     0,   155,     0,    54,
+     157,   157,    96,    98,   100,   102,   119,     0,     0,    53,
+      33,    30,    54,     0,    28,   156,   151,    54,    54,    24,
+      53,    54,    51,    52,    53,    41,     0,    53,    53,    43,
+      39,     0,   150,   146,   149,    54,    53,     0,    40,    36,
+       0,     0,    38,     0,     0,    53,     0,    53,    52,    53,
+      52,    31,    32,    52,     0,    25,    34,     0,    35,     0,
+      54,    26,    37,    53,    53,    42,    44
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    46,   283,    47,    48,    49,   284,    51,   339,   323,
-     324,   315,   325,   129,    52,    53,    54,   316,   149,   202,
-     265,    55,    56,    57,   232,    58,    83,   116,   108,    59,
-      91,    92,    60,    80,    61,   165,   176,    62,   222,   288,
+      -1,    46,   283,    47,    48,    49,   284,    51,   339,   318,
+     319,   315,   320,   129,    52,    53,    54,   316,   149,   203,
+     263,    55,    56,    57,   233,    58,    83,   116,   108,    59,
+      91,    92,    60,    80,    61,   165,   176,    62,   223,   289,
       63,   158,    73
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -272
+#define YYPACT_NINF -265
 static const yytype_int16 yypact[] =
 {
-     340,   -77,  -272,  -272,   989,  -272,  -272,   989,   989,  1061,
-      39,  -272,   989,  1101,  1173,  -272,  -272,  -272,    24,    58,
-     877,  -272,    77,   989,    15,    37,    80,    81,    83,   989,
-     949,    85,   989,   989,   989,   989,   989,   989,  -272,    86,
-      87,   -76,   989,   989,   989,   989,     3,  -272,  -272,  -272,
-    -272,  -272,    19,    26,  1213,   795,   989,  1777,  -272,  -272,
-    -272,  -272,  -272,  -272,  -272,  -272,    20,   989,  1777,  1777,
-    1777,   989,  1777,    16,   989,  1777,   989,    16,   989,    16,
-     989,  -272,  -272,    17,   989,  -272,   989,  -272,    78,  -272,
-    1777,    35,  -272,  -272,  1248,    91,  -272,   -51,   989,   -42,
-      72,  -272,  -272,  1612,  -272,    35,  -272,  -272,    22,   -72,
-    1281,  1314,  1347,  1380,  1645,  -272,    27,  -272,   102,   -72,
-     -72,  1711,  1777,    -9,  -272,   431,  1213,   989,  1213,   100,
-    1744,  -272,  1545,   989,   989,   989,   989,   989,   989,   989,
-     989,   989,   989,   989,   989,   989,   989,   989,   989,   104,
-     989,  1248,  1711,   -46,   989,    29,   -45,  1711,   -15,    29,
-     126,  1777,  1777,   989,  -272,  -272,    74,   989,   989,  -272,
-     989,   989,  1579,   989,   989,  -272,  -272,   989,  -272,   128,
-     989,   989,   989,   989,   989,   989,   989,   989,   989,   989,
-     129,    -8,  -272,  -272,   989,  -272,    59,  1777,    60,  1678,
-     -77,   989,  -272,   989,  -272,   238,   238,   238,   -72,   -72,
-     -72,  1777,   238,   238,   127,   769,   769,   -72,   -72,  1777,
-    1777,  -272,   -28,  -272,  1777,  -272,  -272,  -272,  1777,   104,
-     989,  -272,  -272,  1777,  1777,  1777,  1777,   989,   989,  1777,
-    1777,   104,  1777,  -272,  1777,  1413,  1777,  1446,  1777,  1479,
-    1777,  1512,  1777,  1777,  -272,  -272,   989,  1777,  -272,   -11,
-    -272,  -272,   795,  1777,  1777,   613,   132,    57,   -28,  1777,
-    1777,  1777,   -28,   989,   989,   989,   989,    -6,   613,   109,
-     989,   613,  -272,  -272,  -272,   131,  -272,   137,  -272,    57,
-      57,  1777,  1777,  1777,  1777,  -272,   134,   989,  1777,   -25,
-     -30,  -272,  -272,   522,  -272,  -272,  -272,  1777,  -272,  -272,
-    -272,   140,  -272,  -272,   140,  -272,  1213,  -272,   613,   613,
-    -272,   613,   613,   140,   140,  -272,  1213,   795,  -272,   110,
-     118,   613,   141,   145,  -272,   148,   139,  -272,  -272,  -272,
-    -272,   160,  -272,  -272,  -272,  -272,  -272,   795,  -272,   704,
-    -272,   704,  -272,  -272,   613,  -272,  -272
+     345,   -70,  -265,  -265,  1002,  -265,  -265,  1002,  1002,  1042,
+      14,  -265,  1002,  1115,  1155,  -265,  -265,  -265,    20,    54,
+     888,  -265,    58,  1002,    40,    35,    62,    66,    72,  1002,
+     929,    83,  1002,  1002,  1002,  1002,  1002,  1002,  -265,    84,
+      87,    17,  1002,  1002,  1002,  1002,     3,  -265,  -265,  -265,
+    -265,  -265,    19,    28,  1228,   805,  1002,  1720,  -265,  -265,
+    -265,  -265,  -265,  -265,  -265,  -265,    21,  1002,  1720,  1720,
+    1720,  1002,  1720,    16,  1002,  1720,  1002,    16,  1002,    16,
+    1002,  -265,  -265,    25,  1002,  -265,  1002,  -265,    77,  -265,
+    1720,    13,  -265,  -265,  1258,    95,  -265,   -38,  1002,   -32,
+      74,  -265,  -265,  1555,  -265,    13,  -265,  -265,    27,   -50,
+    1291,  1324,  1357,  1390,  1588,  -265,    47,  -265,    96,   -50,
+     -50,  1654,  1720,    -2,  -265,   437,  1228,  1002,  1228,    52,
+    1687,  -265,   781,  1002,  1002,  1002,  1002,  1002,  1002,  1002,
+    1002,  1002,  1002,  1002,  1002,  1002,  1002,  1002,  1002,   105,
+    1002,  1258,  1654,   -82,  1002,    48,   -39,  1654,   -31,    48,
+     126,  1720,  1720,  1002,  -265,  -265,    79,  1002,  1002,  -265,
+    1002,  1002,  1522,  1002,  1002,  -265,  -265,  1002,  -265,   129,
+    1002,  1002,  1002,  1002,  1002,  1002,  1002,  1002,  1002,  1002,
+     130,   -16,  -265,  -265,  1002,  -265,    59,  1720,    60,  1621,
+    -265,  -265,  1002,  -265,  1002,  -265,   151,   151,   151,   -50,
+     -50,   -50,  1720,   151,   151,   231,   947,   947,   -50,   -50,
+    1720,  1720,  -265,   -25,  -265,  1720,  -265,  -265,  -265,  1720,
+     105,  1002,  -265,  -265,  1720,  1720,  1720,  1720,  1002,  1002,
+    1720,  1720,   105,  1720,  -265,  1720,  1197,  1720,  1423,  1720,
+    1456,  1720,  1489,  1720,  1720,  -265,  -265,  1002,  1720,  -265,
+     -14,  -265,   805,   621,  1720,  1720,   621,   133,    57,   -25,
+    1720,  1720,  1720,   -25,  1002,  1002,  1002,  1002,    -7,   621,
+     109,  1002,  -265,  -265,  -265,   -26,   134,  -265,   137,  -265,
+      57,    57,  1720,  1720,  1720,  1720,  -265,   135,  1002,  1720,
+     -29,  -265,  -265,   141,  -265,  -265,   529,  -265,  -265,  -265,
+    1720,  -265,  -265,  -265,   141,  -265,  1228,   621,   141,   141,
+    -265,  1228,  -265,   621,   621,  -265,   621,   805,  -265,   112,
+     121,   147,  -265,   148,   139,   621,   161,  -265,  -265,  -265,
+    -265,  -265,  -265,  -265,   162,  -265,  -265,   805,  -265,   713,
+     713,  -265,  -265,  -265,   621,  -265,  -265
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -272,  -272,    18,    68,  -272,   -54,     0,  -272,  -272,  -272,
-    -106,  -258,  -124,  -110,  -272,  -272,  -272,  -271,  -103,   -18,
-    -198,  -272,  -272,     1,  -272,  -272,  -272,  -272,  -272,  -272,
-     171,   -13,  -272,  -272,  -272,  -272,  -272,  -272,  -180,  -186,
-    -272,   -33,    12
+    -265,  -265,    18,    71,  -265,   -54,     0,  -265,  -265,  -265,
+    -102,  -243,  -118,  -124,  -265,  -265,  -265,  -264,  -109,     2,
+    -194,  -265,  -265,     1,  -265,  -265,  -265,  -265,  -265,  -265,
+     171,   -13,  -265,  -265,  -265,  -265,  -265,  -265,  -180,  -181,
+    -265,   -33,    12
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -919,64 +920,74 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -7
 static const yytype_int16 yytable[] =
 {
-      50,   131,   170,   124,   139,    68,   312,   309,    69,    70,
-      72,   173,   123,    75,    72,    72,   196,   106,   198,    65,
-      64,    90,   118,   279,    94,    77,    79,   313,   147,   148,
-     103,    90,   310,   109,   110,   111,   112,   113,   114,   171,
-     326,   155,   280,   119,   120,   121,   122,   159,   174,   268,
-      97,    98,   326,   223,   225,   130,   328,   132,   154,   154,
-     278,   272,   229,   281,   125,    99,   328,    74,   151,    64,
-      95,    96,   152,   241,    81,   122,   266,   152,   164,   157,
-      86,   122,    88,   153,   226,   161,    82,   162,   156,   194,
-     303,   255,   178,   295,   193,   194,   256,   262,   194,   172,
-      64,   230,   231,   304,   305,    93,   318,   319,   100,   101,
-     321,   102,   322,   107,   115,   117,   127,   126,   150,   169,
-     154,   160,   331,   163,   175,    50,   179,   130,   197,   199,
-     191,   190,   221,   194,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     204,   122,   200,   354,   227,   224,   243,   254,   258,   260,
-     286,   287,   297,   301,   228,   302,   306,   338,   233,   234,
-     340,   235,   236,   342,   239,   240,   312,   343,   242,   259,
-     344,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   345,   350,   195,   314,   257,   311,   136,   137,   334,
-     138,   105,   263,   139,   264,     0,   330,     0,   282,     0,
-     327,     0,     0,     0,     0,     0,   336,     0,   261,   143,
-     144,   145,   146,   277,     0,     0,     0,   147,   148,     0,
-       0,   269,     0,     0,     0,   347,     0,   349,   270,   271,
-     267,     0,   351,     0,     0,     0,     0,   285,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   122,     0,     0,
-     296,     0,     0,   299,   300,     0,     0,     0,     0,     0,
-       0,     0,     0,   337,   291,   292,   293,   294,     0,     0,
-     308,   298,     0,     0,     0,     0,   289,     0,     0,   320,
-     290,     0,     0,   352,     0,     0,   329,     0,   307,     0,
-       0,     0,     0,   332,   333,   335,     0,     0,   136,   137,
-       0,   138,     0,   341,   139,     0,     0,   130,     0,   346,
-       0,   348,     0,     0,     0,     0,     0,   130,     0,   142,
-     143,   144,   145,   146,     0,   355,   356,     0,   147,   148,
-      -6,     1,     0,     0,     0,     0,     0,     0,     0,   353,
-       0,   353,     2,     3,     4,     5,     0,     6,     7,     8,
-       9,    10,     0,    11,    12,    13,     0,     0,    14,    15,
-       0,    16,     0,    17,     0,     0,     0,    18,     0,    19,
-      20,    21,     0,     0,    22,     0,     0,     0,     0,    23,
-      24,    25,     0,     0,    26,     0,     0,     0,    27,    28,
+      50,   131,   196,   124,   198,    68,   301,   312,    69,    70,
+      72,   266,   123,    75,    72,    72,   170,   106,   224,    65,
+     280,    90,   173,   154,    94,    77,    79,   139,    64,   313,
+     103,    90,   302,   109,   110,   111,   112,   113,   114,   321,
+     281,   155,    74,   119,   120,   121,   122,   159,    97,    98,
+     269,   147,   148,   171,   321,   130,   230,   132,    86,   174,
+      88,   226,   273,    99,   125,   279,   154,   242,   151,   227,
+      81,   328,   152,    64,   194,   122,   328,   152,   164,   157,
+     267,   122,    82,   153,   256,   161,    93,   162,   156,   257,
+     100,   262,   178,   296,   101,   306,    95,    96,   194,   172,
+     102,    64,   193,   194,   200,   201,   231,   232,   317,   307,
+     308,   107,   115,   323,   324,   117,   118,   326,   126,   127,
+     150,   154,   163,   169,   191,    50,   175,   130,   197,   199,
+     160,   335,   179,   222,   206,   207,   208,   209,   210,   211,
+     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
+     205,   122,   190,   194,   228,   225,   354,   244,   255,   259,
+     261,   287,   288,   298,   229,   305,   304,   309,   234,   235,
+     338,   236,   237,   340,   240,   241,   303,   312,   243,   341,
+     342,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   343,   330,   345,   351,   258,   195,   334,   314,   260,
+     332,   105,     0,   264,   327,   265,     0,     0,   282,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   136,   137,   278,   138,     0,     0,   139,   347,
+       0,   349,   270,     0,   350,     0,     0,     0,     0,   271,
+     272,   268,     0,   142,   143,   144,   145,   146,     0,     0,
+       0,     0,   147,   148,     0,     0,     0,     0,   122,     0,
+       0,     0,     0,     0,     0,   285,     0,     0,   286,     0,
+       0,     0,     0,   337,     0,   292,   293,   294,   295,     0,
+       0,   297,   299,     0,   300,     0,     0,   290,     0,     0,
+       0,   291,     0,   352,     0,     0,     0,     0,     0,   310,
+       0,   311,   136,   137,     0,   138,     0,     0,   139,     0,
+       0,     0,   325,     0,     0,     0,   329,   130,     0,   331,
+     333,     0,   130,     0,   143,   144,   145,   146,   336,     0,
+       0,     0,   147,   148,     0,     0,     0,   344,     0,   346,
+       0,   348,     0,     0,     0,    -6,     1,     0,     0,   353,
+     353,     0,     0,     0,     0,   355,   356,     2,     3,     4,
+       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
+      13,     0,     0,    14,    15,     0,    16,     0,    17,     0,
+       0,     0,    18,     0,    19,    20,    21,     0,     0,    22,
+       0,     0,     0,     0,    23,    24,    25,     0,     0,     0,
+      26,     0,     0,     0,    27,    28,    29,    30,     0,    31,
+       0,     0,     0,     0,     0,     0,     0,     0,    32,     0,
+       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
+       0,     0,    38,    39,    40,    41,     0,     0,    42,    43,
+       0,     0,     0,    -6,    44,     0,     0,     0,    45,     2,
+       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
+      11,    12,    13,     0,     0,    14,    15,     0,    16,     0,
+      17,     0,     0,     0,    18,     0,    19,    20,    21,     0,
+       0,    22,     0,     0,     0,     0,    23,    24,    25,     0,
+       0,     0,    26,     0,     0,     0,    27,    28,    29,    30,
+       0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
+      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
+      36,    37,     0,     0,    38,    39,    40,    41,     0,     0,
+      42,    43,     0,     0,     0,     0,    44,     0,     0,     0,
+      45,     2,     3,     4,     5,     0,     6,     7,     8,     9,
+      10,     0,    11,    12,    13,     0,     0,    66,    15,     0,
+      16,   322,    17,     0,     0,     0,    18,     0,    19,    20,
+      21,     0,     0,     0,     0,     0,     0,     0,    23,    24,
+      25,     0,     0,     0,    26,     0,     0,     0,     0,     0,
       29,    30,     0,    31,     0,     0,     0,     0,     0,     0,
        0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,     0,     0,    38,    39,    40,    41,
-       0,     0,    42,    43,     0,     0,     0,    -6,    44,     0,
+      34,    35,    36,    37,     0,     0,    38,    39,     0,    41,
+       0,     0,    42,    43,     0,     0,     0,    64,    44,     0,
        0,     0,    45,     2,     3,     4,     5,     0,     6,     7,
-       8,     9,    10,     0,    11,    12,    13,     0,     0,    14,
+       8,     9,    10,     0,    11,    12,    13,     0,     0,    66,
       15,     0,    16,     0,    17,     0,     0,     0,    18,     0,
-      19,    20,    21,     0,     0,    22,     0,     0,     0,     0,
-      23,    24,    25,     0,     0,    26,     0,     0,     0,    27,
-      28,    29,    30,     0,    31,     0,     0,     0,     0,     0,
-       0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
-      33,    34,    35,    36,    37,     0,     0,    38,    39,    40,
-      41,     0,     0,    42,    43,     0,     0,     0,     0,    44,
-       0,     0,     0,    45,     2,     3,     4,     5,     0,     6,
-       7,     8,     9,    10,     0,    11,    12,    13,     0,     0,
-      66,    15,     0,    16,   317,    17,     0,     0,     0,    18,
-       0,    19,    20,    21,     0,     0,     0,     0,     0,     0,
-       0,    23,    24,    25,     0,     0,    26,     0,     0,     0,
+      19,    20,    21,     0,     0,     0,     0,     0,     0,     0,
+      23,    24,    25,     0,     0,     0,    26,     0,     0,     0,
        0,     0,    29,    30,     0,    31,     0,     0,     0,     0,
        0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
        0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
@@ -985,320 +996,300 @@ static const yytype_int16 yytable[] =
        6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
        0,    66,    15,     0,    16,     0,    17,     0,     0,     0,
       18,     0,    19,    20,    21,     0,     0,     0,     0,     0,
-       0,     0,    23,    24,    25,     0,     0,    26,     0,     0,
-       0,     0,     0,    29,    30,     0,    31,     0,     0,     0,
-       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
-       0,     0,    33,    34,    35,    36,    37,     0,     0,    38,
-      39,     0,    41,     0,     0,    42,    43,     0,     0,     0,
-      64,    44,     0,     0,     0,    45,     2,     3,     4,     5,
-       0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,     0,    66,    15,     0,    16,     0,    17,     0,     0,
-       0,    18,     0,    19,    20,    21,     0,     0,     0,     0,
-       0,     0,     0,    23,    24,    25,     0,     0,    26,     0,
+       0,     0,    23,    24,    25,     0,     0,     0,    26,     0,
        0,     0,     0,     0,    29,    30,     0,    31,     0,     0,
        0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
        0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
       38,    39,     0,    41,     0,     0,    42,    43,     0,     0,
        0,     0,    44,     0,     0,     0,    45,     2,     3,     4,
        5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
-      13,     0,     0,    66,    15,     0,    16,     0,    17,     0,
-       0,     0,    18,     0,    19,    20,     0,     0,     0,   136,
-     137,     0,   138,     0,    23,   139,    25,     0,     0,     0,
-       0,     0,     0,     0,     0,    29,    30,     0,    31,     0,
-       0,     0,     0,   145,   146,     0,     0,    32,     0,   147,
-     148,     0,     0,     0,    33,    34,    35,    36,    37,     0,
-       0,     0,    39,     0,    41,     0,     0,    42,    43,     2,
-       3,     4,     5,    44,     0,     0,     0,    45,     0,     0,
-      11,    12,    13,     0,     0,    66,    15,     0,    16,     0,
-       0,     0,     0,     0,     0,    84,     0,     0,     0,     0,
-      85,     0,    86,    87,    88,    89,    67,     0,    25,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    32,
-       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,     2,     3,     4,     5,     0,     0,     0,     0,    42,
-      43,     0,    11,    12,    13,    44,     0,    66,    15,    45,
-      16,     0,     0,     0,     0,     0,     0,    84,     0,     0,
-       0,     0,     0,     0,    86,     0,    88,     0,    67,     0,
-      25,     2,     3,     4,     5,     0,     0,     0,     0,     0,
-       0,   104,    11,    12,    13,     0,     0,    66,    15,     0,
-      16,    32,     0,     0,     0,     0,     0,     0,    33,    34,
-      35,    36,    37,     0,     0,     0,     0,     0,    67,     0,
+      13,     0,     0,    66,    15,   204,    16,     0,    17,     0,
+       0,     0,    18,     0,    19,    20,   133,   134,     0,     0,
+       0,   135,   136,   137,    23,   138,    25,     0,   139,   140,
+     141,     0,     0,     0,     0,     0,    29,    30,     0,    31,
+       0,     0,     0,   142,   143,   144,   145,   146,    32,    64,
+       0,     0,   147,   148,     0,    33,    34,    35,    36,    37,
+       0,     0,     0,    39,     0,    41,     0,     0,    42,    43,
+       2,     3,     4,     5,    44,     0,     0,     0,    45,     0,
+       0,    11,    12,    13,     0,     0,    66,    15,     0,    16,
+       0,     0,     0,     0,     0,     0,    84,     0,     0,     0,
+       0,    85,     0,    86,    87,    88,    89,    67,     0,    25,
+       0,     2,     3,     4,     5,     0,     0,     0,     0,     0,
+       0,     0,    11,    12,    13,     0,     0,    66,    15,     0,
+      16,    32,     0,     0,     0,     0,     0,    84,    33,    34,
+      35,    36,    37,     0,    86,     0,    88,     0,    67,     0,
       25,    42,    43,     0,     0,     0,     0,    44,     0,     0,
-       0,    45,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
-      35,    36,    37,     2,     3,     4,     5,     0,     0,     0,
-       0,    42,    43,     0,    11,    12,    13,    44,     0,    66,
-      15,    45,    16,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      67,     0,    25,     2,     3,     4,     5,     0,     0,     0,
-       0,     0,     0,     0,    11,    12,    13,     0,     0,    66,
-      15,     0,    16,    32,     0,     0,     0,     0,     0,     0,
-      33,    34,    35,    36,    37,     0,     0,     0,     0,     0,
-      67,     0,    25,    42,    43,     0,     0,     0,     0,    71,
-       0,     0,     0,    45,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
-      33,    34,    35,    36,    37,     2,     3,     4,     5,     0,
-       0,     0,     0,    42,    43,     0,    11,    12,    13,    76,
-       0,    66,    15,    45,    16,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    67,     0,    25,     2,     3,     4,     5,     0,
-       0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
-       0,    66,    15,     0,    16,    32,     0,     0,     0,     0,
+       0,    45,   104,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
+      34,    35,    36,    37,     2,     3,     4,     5,   136,   137,
+       0,   138,    42,    43,   139,    11,    12,    13,    44,     0,
+      66,    15,    45,    16,     0,     0,     0,     0,     0,     0,
+       0,     0,   145,   146,     0,     0,     0,     0,   147,   148,
+       0,    67,     0,    25,     2,     3,     4,     5,     0,     0,
+       0,     0,     0,     0,     0,    11,    12,    13,     0,     0,
+      66,    15,     0,    16,     0,    32,     0,     0,     0,     0,
        0,     0,    33,    34,    35,    36,    37,     0,     0,     0,
-       0,     0,    67,     0,    25,    42,    43,     0,     0,     0,
-       0,    78,     0,     0,     0,    45,     0,     0,     0,     0,
+       0,    67,     0,    25,     0,    42,    43,     0,     0,     0,
+       0,    44,     0,     0,     0,    45,     0,     0,     0,     0,
        0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
-     166,     0,    33,    34,    35,    36,    37,     0,     0,     0,
-       0,     0,     0,     0,     0,    42,    43,     0,     0,     0,
-       0,   128,   133,   134,     0,    45,     0,   135,   136,   137,
-       0,   138,   167,   168,   139,   140,   141,     0,   180,     0,
-       0,     0,     0,     0,   181,     0,     0,     0,     0,   142,
+       0,     0,    33,    34,    35,    36,    37,     2,     3,     4,
+       5,     0,     0,     0,     0,    42,    43,     0,    11,    12,
+      13,    71,     0,    66,    15,    45,    16,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    67,     0,    25,     2,     3,     4,
+       5,     0,     0,     0,     0,     0,     0,     0,    11,    12,
+      13,     0,     0,    66,    15,     0,    16,     0,    32,     0,
+       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
+       0,     0,     0,     0,    67,     0,    25,     0,    42,    43,
+       0,     0,     0,     0,    76,     0,     0,     0,    45,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    32,     0,
+       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
+       2,     3,     4,     5,   274,     0,     0,     0,    42,    43,
+       0,    11,    12,    13,    78,     0,    66,    15,    45,    16,
+       0,     0,   133,   134,     0,     0,     0,   135,   136,   137,
+       0,   138,     0,     0,   139,   140,   141,    67,     0,    25,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   142,
+     143,   144,   145,   146,     0,     0,     0,     0,   147,   148,
+     166,    32,     0,     0,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,     0,     0,     0,     0,     0,     0,     0,
+       0,    42,    43,   133,   134,     0,     0,   128,   135,   136,
+     137,    45,   138,   167,   168,   139,   140,   141,   180,     0,
+       0,     0,     0,     0,     0,   181,     0,     0,     0,     0,
+     142,   143,   144,   145,   146,     0,   133,   134,     0,   147,
+     148,   135,   136,   137,     0,   138,     0,     0,   139,   140,
+     141,   182,     0,     0,     0,     0,     0,     0,   183,     0,
+       0,     0,     0,   142,   143,   144,   145,   146,     0,   133,
+     134,     0,   147,   148,   135,   136,   137,     0,   138,     0,
+       0,   139,   140,   141,   184,     0,     0,     0,     0,     0,
+       0,   185,     0,     0,     0,     0,   142,   143,   144,   145,
+     146,     0,   133,   134,     0,   147,   148,   135,   136,   137,
+       0,   138,     0,     0,   139,   140,   141,   186,     0,     0,
+       0,     0,     0,     0,   187,     0,     0,     0,     0,   142,
      143,   144,   145,   146,     0,   133,   134,     0,   147,   148,
      135,   136,   137,     0,   138,     0,     0,   139,   140,   141,
-       0,   182,     0,     0,     0,     0,     0,   183,     0,     0,
+     275,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,   142,   143,   144,   145,   146,     0,   133,   134,
        0,   147,   148,   135,   136,   137,     0,   138,     0,     0,
-     139,   140,   141,     0,   184,     0,     0,     0,     0,     0,
-     185,     0,     0,     0,     0,   142,   143,   144,   145,   146,
+     139,   140,   141,   276,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   142,   143,   144,   145,   146,
        0,   133,   134,     0,   147,   148,   135,   136,   137,     0,
-     138,     0,     0,   139,   140,   141,     0,   186,     0,     0,
-       0,     0,     0,   187,     0,     0,     0,     0,   142,   143,
+     138,     0,     0,   139,   140,   141,   277,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   142,   143,
      144,   145,   146,     0,   133,   134,     0,   147,   148,   135,
      136,   137,     0,   138,     0,     0,   139,   140,   141,     0,
-     273,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   238,     0,     0,     0,
        0,   142,   143,   144,   145,   146,     0,   133,   134,     0,
      147,   148,   135,   136,   137,     0,   138,     0,     0,   139,
-     140,   141,     0,   274,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   142,   143,   144,   145,   146,     0,
+     140,   141,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   177,     0,   239,   142,   143,   144,   145,   146,     0,
      133,   134,     0,   147,   148,   135,   136,   137,     0,   138,
-       0,     0,   139,   140,   141,     0,   275,     0,     0,     0,
+       0,     0,   139,   140,   141,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,   142,   143,   144,
      145,   146,     0,   133,   134,     0,   147,   148,   135,   136,
-     137,     0,   138,     0,     0,   139,   140,   141,     0,   276,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     142,   143,   144,   145,   146,     0,   133,   134,     0,   147,
-     148,   135,   136,   137,     0,   138,     0,     0,   139,   140,
-     141,     0,     0,     0,     0,     0,     0,     0,   203,     0,
-       0,     0,     0,   142,   143,   144,   145,   146,     0,   133,
-     134,     0,   147,   148,   135,   136,   137,     0,   138,     0,
-       0,   139,   140,   141,     0,     0,     0,     0,     0,     0,
-       0,     0,   237,     0,     0,     0,   142,   143,   144,   145,
-     146,     0,    64,   133,   134,   147,   148,     0,   135,   136,
      137,     0,   138,     0,     0,   139,   140,   141,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   177,     0,   238,
+       0,     0,     0,   188,   189,     0,     0,     0,     0,     0,
      142,   143,   144,   145,   146,     0,   133,   134,     0,   147,
      148,   135,   136,   137,     0,   138,     0,     0,   139,   140,
      141,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   142,   143,   144,   145,   146,     0,   133,
-     134,     0,   147,   148,   135,   136,   137,     0,   138,     0,
-       0,   139,   140,   141,     0,     0,     0,     0,     0,   188,
-     189,     0,     0,     0,     0,     0,   142,   143,   144,   145,
-     146,     0,   133,   134,     0,   147,   148,   135,   136,   137,
+       0,     0,   202,   142,   143,   144,   145,   146,     0,   133,
+     134,   192,   147,   148,   135,   136,   137,     0,   138,     0,
+       0,   139,   140,   141,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   142,   143,   144,   145,
+     146,     0,   133,   134,   192,   147,   148,   135,   136,   137,
        0,   138,     0,     0,   139,   140,   141,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   201,   142,
-     143,   144,   145,   146,     0,   133,   134,   192,   147,   148,
+       0,     0,     0,     0,     0,     0,     0,     0,   202,   142,
+     143,   144,   145,   146,     0,   133,   134,     0,   147,   148,
      135,   136,   137,     0,   138,     0,     0,   139,   140,   141,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   142,   143,   144,   145,   146,     0,   133,   134,
-     192,   147,   148,   135,   136,   137,     0,   138,     0,     0,
-     139,   140,   141,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   201,   142,   143,   144,   145,   146,
-       0,   133,   134,     0,   147,   148,   135,   136,   137,     0,
-     138,     0,     0,   139,   140,   141,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   142,   143,
-     144,   145,   146,     0,     0,     0,     0,   147,   148
+       0,     0,   142,   143,   144,   145,   146,     0,     0,     0,
+       0,   147,   148
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    55,    53,     0,    76,     4,    36,    32,     7,     8,
-       9,    53,    45,    12,    13,    14,   126,    30,   128,     1,
-      97,    20,    98,    34,    23,    13,    14,    57,   100,   101,
-      29,    30,    57,    32,    33,    34,    35,    36,    37,    90,
-     311,    74,    53,    42,    43,    44,    45,    80,    90,   229,
-      13,    14,   323,    99,    99,    54,   314,    56,   104,   104,
-     258,   241,   165,   261,    46,    28,   324,    28,    67,    97,
-      55,    56,    71,   176,    50,    74,   104,    76,    91,    78,
-      45,    80,    47,    71,    99,    84,    28,    86,    76,   104,
-     288,    99,   105,    99,   103,   104,   104,   200,   104,    98,
-      97,    27,    28,   289,   290,    28,   304,   305,    28,    28,
-     308,    28,   310,    28,    28,    28,    90,    98,    98,    28,
-     104,   104,   320,    45,    52,   125,   104,   126,   127,   128,
-      28,   104,    28,   104,   133,   134,   135,   136,   137,   138,
+       0,    55,   126,     0,   128,     4,    32,    36,     7,     8,
+       9,   205,    45,    12,    13,    14,    54,    30,   100,     1,
+      34,    20,    54,   105,    23,    13,    14,    77,    98,    58,
+      29,    30,    58,    32,    33,    34,    35,    36,    37,   303,
+      54,    74,    28,    42,    43,    44,    45,    80,    13,    14,
+     230,   101,   102,    91,   318,    54,   165,    56,    45,    91,
+      47,   100,   242,    28,    46,   259,   105,   176,    67,   100,
+      50,   314,    71,    98,   105,    74,   319,    76,    91,    78,
+     105,    80,    28,    71,   100,    84,    28,    86,    76,   105,
+      28,   200,   105,   100,    28,   289,    56,    57,   105,    98,
+      28,    98,   104,   105,    52,    53,    27,    28,   302,   290,
+     291,    28,    28,   307,   308,    28,    99,   311,    99,    91,
+      99,   105,    45,    28,    28,   125,    52,   126,   127,   128,
+     105,   325,   105,    28,   133,   134,   135,   136,   137,   138,
      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     132,   150,    52,   351,    28,   154,    28,    28,    99,    99,
-      28,   104,    53,    32,   163,    28,    32,    57,   167,   168,
-      52,   170,   171,    32,   173,   174,    36,    32,   177,   197,
+     132,   150,   105,   105,    28,   154,   350,    28,    28,   100,
+     100,    28,   105,    54,   163,    28,    32,    32,   167,   168,
+      58,   170,   171,    52,   173,   174,   285,    36,   177,    32,
       32,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,    52,    32,   125,   300,   194,   299,    70,    71,   323,
-      73,    30,   201,    76,   203,    -1,   316,    -1,   262,    -1,
-     313,    -1,    -1,    -1,    -1,    -1,   326,    -1,   200,    92,
-      93,    94,    95,   256,    -1,    -1,    -1,   100,   101,    -1,
-      -1,   230,    -1,    -1,    -1,   338,    -1,   340,   237,   238,
-     222,    -1,   345,    -1,    -1,    -1,    -1,   265,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   256,    -1,    -1,
-     278,    -1,    -1,   281,   282,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   327,   273,   274,   275,   276,    -1,    -1,
-     298,   280,    -1,    -1,    -1,    -1,   268,    -1,    -1,   307,
-     272,    -1,    -1,   347,    -1,    -1,   314,    -1,   297,    -1,
-      -1,    -1,    -1,   321,   322,   323,    -1,    -1,    70,    71,
-      -1,    73,    -1,   331,    76,    -1,    -1,   316,    -1,   337,
-      -1,   339,    -1,    -1,    -1,    -1,    -1,   326,    -1,    91,
-      92,    93,    94,    95,    -1,   353,   354,    -1,   100,   101,
-       0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   349,
-      -1,   351,    12,    13,    14,    15,    -1,    17,    18,    19,
-      20,    21,    -1,    23,    24,    25,    -1,    -1,    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,    54,    -1,    -1,    -1,    58,    59,
-      60,    61,    -1,    63,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-      80,    81,    82,    83,    -1,    -1,    86,    87,    88,    89,
-      -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,    -1,
-      -1,    -1,   102,    12,    13,    14,    15,    -1,    17,    18,
+     189,    52,   316,    32,    32,   194,   125,   321,   300,   197,
+     318,    30,    -1,   202,   313,   204,    -1,    -1,   262,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    72,   257,    74,    -1,    -1,    77,   338,
+      -1,   340,   231,    -1,   343,    -1,    -1,    -1,    -1,   238,
+     239,   223,    -1,    92,    93,    94,    95,    96,    -1,    -1,
+      -1,    -1,   101,   102,    -1,    -1,    -1,    -1,   257,    -1,
+      -1,    -1,    -1,    -1,    -1,   263,    -1,    -1,   266,    -1,
+      -1,    -1,    -1,   327,    -1,   274,   275,   276,   277,    -1,
+      -1,   279,   281,    -1,   282,    -1,    -1,   269,    -1,    -1,
+      -1,   273,    -1,   347,    -1,    -1,    -1,    -1,    -1,   298,
+      -1,   299,    71,    72,    -1,    74,    -1,    -1,    77,    -1,
+      -1,    -1,   310,    -1,    -1,    -1,   314,   316,    -1,   317,
+     318,    -1,   321,    -1,    93,    94,    95,    96,   326,    -1,
+      -1,    -1,   101,   102,    -1,    -1,    -1,   335,    -1,   337,
+      -1,   339,    -1,    -1,    -1,     0,     1,    -1,    -1,   349,
+     350,    -1,    -1,    -1,    -1,   353,   354,    12,    13,    14,
+      15,    -1,    17,    18,    19,    20,    21,    -1,    23,    24,
+      25,    -1,    -1,    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,    -1,    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,    -1,    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,    -1,    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,    54,    -1,    -1,    -1,    58,
-      59,    60,    61,    -1,    63,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,
-      79,    80,    81,    82,    83,    -1,    -1,    86,    87,    88,
-      89,    -1,    -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,    -1,
-      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,    54,    -1,    -1,    -1,
-      -1,    -1,    60,    61,    -1,    63,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,
-      -1,    79,    80,    81,    82,    83,    -1,    -1,    86,    87,
-      -1,    89,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,
-      98,    -1,    -1,    -1,   102,    12,    13,    14,    15,    -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,
       -1,    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,    54,    -1,    -1,
-      -1,    -1,    -1,    60,    61,    -1,    63,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,
-      -1,    -1,    79,    80,    81,    82,    83,    -1,    -1,    86,
-      87,    -1,    89,    -1,    -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,    -1,    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,    54,    -1,
-      -1,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
-      -1,    -1,    -1,    79,    80,    81,    82,    83,    -1,    -1,
-      86,    87,    -1,    89,    -1,    -1,    92,    93,    -1,    -1,
-      -1,    -1,    98,    -1,    -1,    -1,   102,    12,    13,    14,
+      -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,    -1,    28,    29,    -1,    31,    -1,    33,    -1,
-      -1,    -1,    37,    -1,    39,    40,    -1,    -1,    -1,    70,
-      71,    -1,    73,    -1,    49,    76,    51,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,
-      -1,    -1,    -1,    94,    95,    -1,    -1,    72,    -1,   100,
-     101,    -1,    -1,    -1,    79,    80,    81,    82,    83,    -1,
-      -1,    -1,    87,    -1,    89,    -1,    -1,    92,    93,    12,
-      13,    14,    15,    98,    -1,    -1,    -1,   102,    -1,    -1,
-      23,    24,    25,    -1,    -1,    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,
+      25,    -1,    -1,    28,    29,    54,    31,    -1,    33,    -1,
+      -1,    -1,    37,    -1,    39,    40,    65,    66,    -1,    -1,
+      -1,    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,    -1,    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,    -1,    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,    71,    72,
+      -1,    74,    93,    94,    77,    23,    24,    25,    99,    -1,
+      28,    29,   103,    31,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    95,    96,    -1,    -1,    -1,    -1,   101,   102,
+      -1,    49,    -1,    51,    12,    13,    14,    15,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    23,    24,    25,    -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,
+      25,    99,    -1,    28,    29,   103,    31,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-      -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    82,
-      83,    12,    13,    14,    15,    -1,    -1,    -1,    -1,    92,
-      93,    -1,    23,    24,    25,    98,    -1,    28,    29,   102,
-      31,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,
-      -1,    -1,    -1,    -1,    45,    -1,    47,    -1,    49,    -1,
-      51,    12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,
-      -1,    62,    23,    24,    25,    -1,    -1,    28,    29,    -1,
-      31,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
-      81,    82,    83,    -1,    -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,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
-      81,    82,    83,    12,    13,    14,    15,    -1,    -1,    -1,
-      -1,    92,    93,    -1,    23,    24,    25,    98,    -1,    28,
-      29,   102,    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,    -1,    28,
-      29,    -1,    31,    72,    -1,    -1,    -1,    -1,    -1,    -1,
-      79,    80,    81,    82,    83,    -1,    -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,    72,    -1,    -1,    -1,    -1,    -1,    -1,
-      79,    80,    81,    82,    83,    12,    13,    14,    15,    -1,
-      -1,    -1,    -1,    92,    93,    -1,    23,    24,    25,    98,
-      -1,    28,    29,   102,    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,
-      -1,    28,    29,    -1,    31,    72,    -1,    -1,    -1,    -1,
-      -1,    -1,    79,    80,    81,    82,    83,    -1,    -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,    72,    -1,    -1,    -1,    -1,
-      42,    -1,    79,    80,    81,    82,    83,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
-      -1,    98,    64,    65,    -1,   102,    -1,    69,    70,    71,
-      -1,    73,    74,    75,    76,    77,    78,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,    91,
-      92,    93,    94,    95,    -1,    64,    65,    -1,   100,   101,
-      69,    70,    71,    -1,    73,    -1,    -1,    76,    77,    78,
-      -1,    47,    -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,
-      -1,    -1,    91,    92,    93,    94,    95,    -1,    64,    65,
-      -1,   100,   101,    69,    70,    71,    -1,    73,    -1,    -1,
-      76,    77,    78,    -1,    47,    -1,    -1,    -1,    -1,    -1,
-      53,    -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,
-      -1,    64,    65,    -1,   100,   101,    69,    70,    71,    -1,
-      73,    -1,    -1,    76,    77,    78,    -1,    47,    -1,    -1,
-      -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,    91,    92,
-      93,    94,    95,    -1,    64,    65,    -1,   100,   101,    69,
-      70,    71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,
+      -1,    -1,    -1,    -1,    49,    -1,    51,    12,    13,    14,
+      15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    24,
+      25,    -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,    47,    -1,    -1,    -1,    93,    94,
+      -1,    23,    24,    25,    99,    -1,    28,    29,   103,    31,
+      -1,    -1,    65,    66,    -1,    -1,    -1,    70,    71,    72,
+      -1,    74,    -1,    -1,    77,    78,    79,    49,    -1,    51,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    -1,    -1,   101,   102,
+      42,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
+      82,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    93,    94,    65,    66,    -1,    -1,    99,    70,    71,
+      72,   103,    74,    75,    76,    77,    78,    79,    47,    -1,
+      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    -1,
+      92,    93,    94,    95,    96,    -1,    65,    66,    -1,   101,
+     102,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
+      79,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    65,
+      66,    -1,   101,   102,    70,    71,    72,    -1,    74,    -1,
+      -1,    77,    78,    79,    47,    -1,    -1,    -1,    -1,    -1,
+      -1,    54,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
+      96,    -1,    65,    66,    -1,   101,   102,    70,    71,    72,
+      -1,    74,    -1,    -1,    77,    78,    79,    47,    -1,    -1,
+      -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    65,    66,    -1,   101,   102,
+      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,    64,    65,    -1,
-     100,   101,    69,    70,    71,    -1,    73,    -1,    -1,    76,
-      77,    78,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
-      64,    65,    -1,   100,   101,    69,    70,    71,    -1,    73,
-      -1,    -1,    76,    77,    78,    -1,    47,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,
-      94,    95,    -1,    64,    65,    -1,   100,   101,    69,    70,
-      71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,    47,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      91,    92,    93,    94,    95,    -1,    64,    65,    -1,   100,
-     101,    69,    70,    71,    -1,    73,    -1,    -1,    76,    77,
-      78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    53,    -1,
-      -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,    64,
-      65,    -1,   100,   101,    69,    70,    71,    -1,    73,    -1,
-      -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    53,    -1,    -1,    -1,    91,    92,    93,    94,
-      95,    -1,    97,    64,    65,   100,   101,    -1,    69,    70,
-      71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    90,
-      91,    92,    93,    94,    95,    -1,    64,    65,    -1,   100,
-     101,    69,    70,    71,    -1,    73,    -1,    -1,    76,    77,
-      78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,    64,
-      65,    -1,   100,   101,    69,    70,    71,    -1,    73,    -1,
-      -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    84,
-      85,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
-      95,    -1,    64,    65,    -1,   100,   101,    69,    70,    71,
-      -1,    73,    -1,    -1,    76,    77,    78,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,
-      92,    93,    94,    95,    -1,    64,    65,    99,   100,   101,
-      69,    70,    71,    -1,    73,    -1,    -1,    76,    77,    78,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    91,    92,    93,    94,    95,    -1,    64,    65,
-      99,   100,   101,    69,    70,    71,    -1,    73,    -1,    -1,
-      76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    90,    91,    92,    93,    94,    95,
-      -1,    64,    65,    -1,   100,   101,    69,    70,    71,    -1,
-      73,    -1,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    94,    95,    96,    -1,    65,    66,
+      -1,   101,   102,    70,    71,    72,    -1,    74,    -1,    -1,
+      77,    78,    79,    47,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
+      -1,    65,    66,    -1,   101,   102,    70,    71,    72,    -1,
+      74,    -1,    -1,    77,    78,    79,    47,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
+      94,    95,    96,    -1,    65,    66,    -1,   101,   102,    70,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,
+      -1,    92,    93,    94,    95,    96,    -1,    65,    66,    -1,
+     101,   102,    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,    96,    -1,
+      65,    66,    -1,   101,   102,    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,    65,    66,    -1,   101,   102,    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,    65,    66,    -1,   101,
+     102,    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,    96,    -1,    65,
+      66,   100,   101,   102,    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,    65,    66,   100,   101,   102,    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
+      93,    94,    95,    96,    -1,    65,    66,    -1,   101,   102,
+      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,
+      -1,   101,   102
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1307,40 +1298,40 @@ static const yytype_uint8 yystos[] =
 {
        0,     1,    12,    13,    14,    15,    17,    18,    19,    20,
       21,    23,    24,    25,    28,    29,    31,    33,    37,    39,
-      40,    41,    44,    49,    50,    51,    54,    58,    59,    60,
-      61,    63,    72,    79,    80,    81,    82,    83,    86,    87,
-      88,    89,    92,    93,    98,   102,   106,   108,   109,   110,
-     111,   112,   119,   120,   121,   126,   127,   128,   130,   134,
-     137,   139,   142,   145,    97,   107,    28,    49,   128,   128,
-     128,    98,   128,   147,    28,   128,    98,   147,    98,   147,
-     138,    50,    28,   131,    38,    43,    45,    46,    47,    48,
-     128,   135,   136,    28,   128,    55,    56,    13,    14,    28,
-      28,    28,    28,   128,    62,   135,   136,    28,   133,   128,
-     128,   128,   128,   128,   128,    28,   132,    28,    98,   128,
-     128,   128,   128,   146,     0,   107,    98,    90,    98,   118,
-     128,   110,   128,    64,    65,    69,    70,    71,    73,    76,
-      77,    78,    91,    92,    93,    94,    95,   100,   101,   123,
-      98,   128,   128,   147,   104,   146,   147,   128,   146,   146,
-     104,   128,   128,    45,   136,   140,    42,    74,    75,    28,
-      53,    90,   128,    53,    90,    52,   141,    55,   136,   104,
-      47,    53,    47,    53,    47,    53,    47,    53,    84,    85,
-     104,    28,    99,   103,   104,   108,   118,   128,   118,   128,
-      52,    90,   124,    53,   107,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,    28,   143,    99,   128,    99,    99,    28,   128,   123,
-      27,    28,   129,   128,   128,   128,   128,    53,    90,   128,
-     128,   123,   128,    28,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,    28,    99,   104,   128,    99,   124,
-      99,   107,   123,   128,   128,   125,   104,   107,   143,   128,
-     128,   128,   143,    47,    47,    47,    47,   146,   125,    34,
-      53,   125,   110,   107,   111,   124,    28,   104,   144,   107,
-     107,   128,   128,   128,   128,    99,   124,    53,   128,   124,
-     124,    32,    28,   125,   144,   144,    32,   128,   124,    32,
-      57,   123,    36,    57,   115,   116,   122,    32,   125,   125,
-     124,   125,   125,   114,   115,   117,   122,   123,   116,   124,
-     118,   125,   124,   124,   117,   124,   118,   110,    57,   113,
-      52,   124,    32,    32,    32,    52,   124,   123,   124,   123,
-      32,   123,   110,   111,   125,   124,   124
+      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,   109,   110,   111,
+     112,   113,   120,   121,   122,   127,   128,   129,   131,   135,
+     138,   140,   143,   146,    98,   108,    28,    49,   129,   129,
+     129,    99,   129,   148,    28,   129,    99,   148,    99,   148,
+     139,    50,    28,   132,    38,    43,    45,    46,    47,    48,
+     129,   136,   137,    28,   129,    56,    57,    13,    14,    28,
+      28,    28,    28,   129,    63,   136,   137,    28,   134,   129,
+     129,   129,   129,   129,   129,    28,   133,    28,    99,   129,
+     129,   129,   129,   147,     0,   108,    99,    91,    99,   119,
+     129,   111,   129,    65,    66,    70,    71,    72,    74,    77,
+      78,    79,    92,    93,    94,    95,    96,   101,   102,   124,
+      99,   129,   129,   148,   105,   147,   148,   129,   147,   147,
+     105,   129,   129,    45,   137,   141,    42,    75,    76,    28,
+      54,    91,   129,    54,    91,    52,   142,    56,   137,   105,
+      47,    54,    47,    54,    47,    54,    47,    54,    85,    86,
+     105,    28,   100,   104,   105,   109,   119,   129,   119,   129,
+      52,    53,    91,   125,    54,   108,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,    28,   144,   100,   129,   100,   100,    28,   129,
+     124,    27,    28,   130,   129,   129,   129,   129,    54,    91,
+     129,   129,   124,   129,    28,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,    28,   100,   105,   129,   100,
+     125,   100,   124,   126,   129,   129,   126,   105,   108,   144,
+     129,   129,   129,   144,    47,    47,    47,    47,   147,   126,
+      34,    54,   111,   108,   112,   125,   125,    28,   105,   145,
+     108,   108,   129,   129,   129,   129,   100,   125,    54,   129,
+     125,    32,    58,   124,    32,    28,   126,   145,   145,    32,
+     129,   125,    36,    58,   116,   117,   123,   126,   115,   116,
+     118,   123,    32,   126,   126,   125,   126,   124,   117,   125,
+     119,   125,   118,   125,   119,   126,   125,   111,    58,   114,
+      52,    32,    32,    52,   125,    32,   125,   124,   125,   124,
+     124,    32,   111,   112,   126,   125,   125
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2338,12 +2329,12 @@ yyreduce:
 #line 261 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, end = 0;
-		WRITE_UINT32(&then, (yyvsp[(5) - (7)].code) - (yyvsp[(1) - (7)].code));
-		WRITE_UINT32(&end, (yyvsp[(6) - (7)].code) - (yyvsp[(1) - (7)].code));
-		(*g_lingo->_currentScript)[(yyvsp[(1) - (7)].code) + 1] = then;	/* thenpart */
-		(*g_lingo->_currentScript)[(yyvsp[(1) - (7)].code) + 3] = end;	/* end, if cond fails */
+		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
+		WRITE_UINT32(&end, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (6)].code) + 1] = then;	/* thenpart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (6)].code) + 3] = end;	/* end, if cond fails */
 
-		checkEnd((yyvsp[(7) - (7)].s), "if", true);
+		checkEnd((yyvsp[(6) - (6)].s), "if", true);
 
 		g_lingo->processIf(0, 0); ;}
     break;
@@ -2352,14 +2343,14 @@ yyreduce:
 #line 271 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
-		WRITE_UINT32(&then, (yyvsp[(5) - (10)].code) - (yyvsp[(1) - (10)].code));
-		WRITE_UINT32(&else1, (yyvsp[(8) - (10)].code) - (yyvsp[(1) - (10)].code));
-		WRITE_UINT32(&end, (yyvsp[(9) - (10)].code) - (yyvsp[(1) - (10)].code));
-		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 1] = then;	/* thenpart */
-		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 2] = else1;	/* elsepart */
-		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 3] = end;	/* end, if cond fails */
+		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
+		WRITE_UINT32(&else1, (yyvsp[(7) - (9)].code) - (yyvsp[(1) - (9)].code));
+		WRITE_UINT32(&end, (yyvsp[(8) - (9)].code) - (yyvsp[(1) - (9)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 1] = then;	/* thenpart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 2] = else1;	/* elsepart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 3] = end;	/* end, if cond fails */
 
-		checkEnd((yyvsp[(10) - (10)].s), "if", true);
+		checkEnd((yyvsp[(9) - (9)].s), "if", true);
 
 		g_lingo->processIf(0, 0); ;}
     break;
@@ -2368,16 +2359,16 @@ yyreduce:
 #line 283 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
-		WRITE_UINT32(&then, (yyvsp[(5) - (10)].code) - (yyvsp[(1) - (10)].code));
-		WRITE_UINT32(&else1, (yyvsp[(7) - (10)].code) - (yyvsp[(1) - (10)].code));
-		WRITE_UINT32(&end, (yyvsp[(9) - (10)].code) - (yyvsp[(1) - (10)].code));
-		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 1] = then;	/* thenpart */
-		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 2] = else1;	/* elsepart */
-		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 3] = end;	/* end, if cond fails */
+		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
+		WRITE_UINT32(&else1, (yyvsp[(6) - (9)].code) - (yyvsp[(1) - (9)].code));
+		WRITE_UINT32(&end, (yyvsp[(8) - (9)].code) - (yyvsp[(1) - (9)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 1] = then;	/* thenpart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 2] = else1;	/* elsepart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 3] = end;	/* end, if cond fails */
 
-		checkEnd((yyvsp[(10) - (10)].s), "if", true);
+		checkEnd((yyvsp[(9) - (9)].s), "if", true);
 
-		g_lingo->processIf(0, (yyvsp[(9) - (10)].code) - (yyvsp[(1) - (10)].code)); ;}
+		g_lingo->processIf(0, (yyvsp[(8) - (9)].code) - (yyvsp[(1) - (9)].code)); ;}
     break;
 
   case 33:
@@ -3079,7 +3070,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 3083 "engines/director/lingo/lingo-gr.cpp"
+#line 3074 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index fc29598..2d1093f 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -89,43 +89,44 @@
      tREPEAT = 305,
      tSET = 306,
      tTHEN = 307,
-     tTO = 308,
-     tWHEN = 309,
-     tWITH = 310,
-     tWHILE = 311,
-     tNLELSE = 312,
-     tFACTORY = 313,
-     tMETHOD = 314,
-     tOPEN = 315,
-     tPLAY = 316,
-     tDONE = 317,
-     tINSTANCE = 318,
-     tGE = 319,
-     tLE = 320,
-     tGT = 321,
-     tLT = 322,
-     tEQ = 323,
-     tNEQ = 324,
-     tAND = 325,
-     tOR = 326,
-     tNOT = 327,
-     tMOD = 328,
-     tAFTER = 329,
-     tBEFORE = 330,
-     tCONCAT = 331,
-     tCONTAINS = 332,
-     tSTARTS = 333,
-     tCHAR = 334,
-     tITEM = 335,
-     tLINE = 336,
-     tWORD = 337,
-     tSPRITE = 338,
-     tINTERSECTS = 339,
-     tWITHIN = 340,
-     tTELL = 341,
-     tPROPERTY = 342,
-     tON = 343,
-     tME = 344
+     tTHENNL = 308,
+     tTO = 309,
+     tWHEN = 310,
+     tWITH = 311,
+     tWHILE = 312,
+     tNLELSE = 313,
+     tFACTORY = 314,
+     tMETHOD = 315,
+     tOPEN = 316,
+     tPLAY = 317,
+     tDONE = 318,
+     tINSTANCE = 319,
+     tGE = 320,
+     tLE = 321,
+     tGT = 322,
+     tLT = 323,
+     tEQ = 324,
+     tNEQ = 325,
+     tAND = 326,
+     tOR = 327,
+     tNOT = 328,
+     tMOD = 329,
+     tAFTER = 330,
+     tBEFORE = 331,
+     tCONCAT = 332,
+     tCONTAINS = 333,
+     tSTARTS = 334,
+     tCHAR = 335,
+     tITEM = 336,
+     tLINE = 337,
+     tWORD = 338,
+     tSPRITE = 339,
+     tINTERSECTS = 340,
+     tWITHIN = 341,
+     tTELL = 342,
+     tPROPERTY = 343,
+     tON = 344,
+     tME = 345
    };
 #endif
 /* Tokens.  */
@@ -179,43 +180,44 @@
 #define tREPEAT 305
 #define tSET 306
 #define tTHEN 307
-#define tTO 308
-#define tWHEN 309
-#define tWITH 310
-#define tWHILE 311
-#define tNLELSE 312
-#define tFACTORY 313
-#define tMETHOD 314
-#define tOPEN 315
-#define tPLAY 316
-#define tDONE 317
-#define tINSTANCE 318
-#define tGE 319
-#define tLE 320
-#define tGT 321
-#define tLT 322
-#define tEQ 323
-#define tNEQ 324
-#define tAND 325
-#define tOR 326
-#define tNOT 327
-#define tMOD 328
-#define tAFTER 329
-#define tBEFORE 330
-#define tCONCAT 331
-#define tCONTAINS 332
-#define tSTARTS 333
-#define tCHAR 334
-#define tITEM 335
-#define tLINE 336
-#define tWORD 337
-#define tSPRITE 338
-#define tINTERSECTS 339
-#define tWITHIN 340
-#define tTELL 341
-#define tPROPERTY 342
-#define tON 343
-#define tME 344
+#define tTHENNL 308
+#define tTO 309
+#define tWHEN 310
+#define tWITH 311
+#define tWHILE 312
+#define tNLELSE 313
+#define tFACTORY 314
+#define tMETHOD 315
+#define tOPEN 316
+#define tPLAY 317
+#define tDONE 318
+#define tINSTANCE 319
+#define tGE 320
+#define tLE 321
+#define tGT 322
+#define tLT 323
+#define tEQ 324
+#define tNEQ 325
+#define tAND 326
+#define tOR 327
+#define tNOT 328
+#define tMOD 329
+#define tAFTER 330
+#define tBEFORE 331
+#define tCONCAT 332
+#define tCONTAINS 333
+#define tSTARTS 334
+#define tCHAR 335
+#define tITEM 336
+#define tLINE 337
+#define tWORD 338
+#define tSPRITE 339
+#define tINTERSECTS 340
+#define tWITHIN 341
+#define tTELL 342
+#define tPROPERTY 343
+#define tON 344
+#define tME 345
 
 
 
@@ -233,7 +235,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 1529 of yacc.c.  */
-#line 237 "engines/director/lingo/lingo-gr.hpp"
+#line 239 "engines/director/lingo/lingo-gr.hpp"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 1e898e9..407b1ea 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -96,7 +96,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %token<s> ID STRING HANDLER SYMBOL
 %token<s> ENDCLAUSE tPLAYACCEL
 %token tDOWN tELSE tNLELSIF tEXIT tFRAME tGLOBAL tGO tIF tINTO tLOOP tMACRO
-%token tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN
+%token tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTHENNL tTO tWHEN
 %token tWITH tWHILE tNLELSE tFACTORY tMETHOD tOPEN tPLAY tDONE tINSTANCE
 %token tGE tLE tGT tLT tEQ tNEQ tAND tOR tNOT tMOD
 %token tAFTER tBEFORE tCONCAT tCONTAINS tSTARTS tCHAR tITEM tLINE tWORD
@@ -258,40 +258,40 @@ stmt: stmtoneliner
 		}
 	;
 
-ifstmt:	if cond tTHEN nl stmtlist end ENDCLAUSE		{
+ifstmt:	if cond tTHENNL stmtlist end ENDCLAUSE		{
 		inst then = 0, end = 0;
-		WRITE_UINT32(&then, $5 - $1);
-		WRITE_UINT32(&end, $6 - $1);
+		WRITE_UINT32(&then, $4 - $1);
+		WRITE_UINT32(&end, $5 - $1);
 		(*g_lingo->_currentScript)[$1 + 1] = then;	/* thenpart */
 		(*g_lingo->_currentScript)[$1 + 3] = end;	/* end, if cond fails */
 
-		checkEnd($7, "if", true);
+		checkEnd($6, "if", true);
 
 		g_lingo->processIf(0, 0); }
-	| if cond tTHEN nl stmtlist end tNLELSE stmtlist end ENDCLAUSE {
+	| if cond tTHENNL stmtlist end tNLELSE stmtlist end ENDCLAUSE {
 		inst then = 0, else1 = 0, end = 0;
-		WRITE_UINT32(&then, $5 - $1);
-		WRITE_UINT32(&else1, $8 - $1);
-		WRITE_UINT32(&end, $9 - $1);
+		WRITE_UINT32(&then, $4 - $1);
+		WRITE_UINT32(&else1, $7 - $1);
+		WRITE_UINT32(&end, $8 - $1);
 		(*g_lingo->_currentScript)[$1 + 1] = then;	/* thenpart */
 		(*g_lingo->_currentScript)[$1 + 2] = else1;	/* elsepart */
 		(*g_lingo->_currentScript)[$1 + 3] = end;	/* end, if cond fails */
 
-		checkEnd($10, "if", true);
+		checkEnd($9, "if", true);
 
 		g_lingo->processIf(0, 0); }
-	| if cond tTHEN nl stmtlist end begin elseifstmt end ENDCLAUSE {
+	| if cond tTHENNL stmtlist end begin elseifstmt end ENDCLAUSE {
 		inst then = 0, else1 = 0, end = 0;
-		WRITE_UINT32(&then, $5 - $1);
-		WRITE_UINT32(&else1, $7 - $1);
-		WRITE_UINT32(&end, $9 - $1);
+		WRITE_UINT32(&then, $4 - $1);
+		WRITE_UINT32(&else1, $6 - $1);
+		WRITE_UINT32(&end, $8 - $1);
 		(*g_lingo->_currentScript)[$1 + 1] = then;	/* thenpart */
 		(*g_lingo->_currentScript)[$1 + 2] = else1;	/* elsepart */
 		(*g_lingo->_currentScript)[$1 + 3] = end;	/* end, if cond fails */
 
-		checkEnd($10, "if", true);
+		checkEnd($9, "if", true);
 
-		g_lingo->processIf(0, $9 - $1); }
+		g_lingo->processIf(0, $8 - $1); }
 	| if cond tTHEN begin stmtoneliner end {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, $4 - $1);
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index c931dc8..7b03983 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 73
-#define YY_END_OF_BUFFER 74
+#define YY_NUM_RULES 74
+#define YY_END_OF_BUFFER 75
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -373,38 +373,38 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[273] =
+static yyconst flex_int16_t yy_accept[274] =
     {   0,
-        0,    0,   74,   72,    4,   70,   70,   72,   72,   72,
-       69,   69,   69,   68,   69,   69,   66,   66,   66,   66,
-       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-       66,   66,   66,   66,   72,    3,    3,    4,   70,    0,
-        0,    0,    0,    0,   71,    5,   65,    2,   67,   68,
-       64,   62,   63,   66,   66,   66,   66,   66,   66,   66,
-       66,   66,   66,   66,   66,   66,   23,   13,   66,   66,
-       66,   66,   66,   66,   66,   66,   66,   36,   37,   66,
-       39,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-       55,   66,   66,   66,    1,    3,    3,    0,    5,    2,
-
-       67,   66,    7,   66,   66,   66,   66,   66,   66,   17,
-       66,   66,   66,   66,    0,   66,   66,   66,   66,   66,
-       66,   66,   32,   66,   66,   35,   66,   66,   66,   66,
-       44,   66,   46,   66,   66,   66,   66,   66,   66,   66,
-       66,    0,   66,   66,    9,   66,   11,   12,   16,    0,
-       17,   19,   66,   66,   66,    0,   66,   66,   26,   27,
-       28,   29,   66,   66,   66,   34,   38,   40,   66,   66,
-       66,   66,   66,   48,    0,   54,   59,   66,   57,   61,
-       15,    6,   66,   66,   17,   17,   66,   20,   66,   22,
-       66,   66,   30,   66,   33,   66,   66,   66,   66,   66,
-
-       66,   53,   53,   53,   60,   66,    0,    8,   66,   17,
-       66,   21,   66,   66,   31,   66,   66,   66,   45,   56,
-       47,    0,    0,   53,   53,   58,    0,   66,   18,   66,
-       66,   66,   66,   66,    0,    0,    0,    0,   53,   53,
-       14,   10,   24,   66,   66,   42,   43,    0,    0,    0,
-       53,   53,   66,   41,    0,    0,    0,    0,    0,   25,
-       52,   51,   52,    0,    0,    0,    0,    0,    0,   49,
-       50,    0
+        0,    0,   75,   73,    4,   71,   71,   73,   73,   73,
+       70,   70,   70,   69,   70,   70,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   73,    3,    3,    4,   71,    0,
+        0,    0,    0,    0,   72,    5,   66,    2,   68,   69,
+       65,   63,   64,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   23,   13,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   36,   37,   67,
+       39,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       56,   67,   67,   67,    1,    3,    3,    0,    5,    2,
+
+       68,   67,    7,   67,   67,   67,   67,   67,   67,   17,
+       67,   67,   67,   67,    0,   67,   67,   67,   67,   67,
+       67,   67,   32,   67,   67,   35,   67,   67,   67,   67,
+       44,   67,   46,   67,   67,   67,   67,   67,   67,   67,
+       67,    0,   67,   67,    9,   67,   11,   12,   16,    0,
+       17,   19,   67,   67,   67,    0,   67,   67,   26,   27,
+       28,   29,   67,   67,   67,   34,   38,   40,   67,   67,
+       67,   67,   67,   48,    0,   54,   60,   67,   58,   62,
+       15,    6,   67,   67,   17,   17,   67,   20,   67,   22,
+       67,   67,   30,   67,   33,   67,   67,   67,   67,   67,
+
+       67,   53,   53,   53,   55,   61,   67,    0,    8,   67,
+       17,   67,   21,   67,   67,   31,   67,   67,   67,   45,
+       57,   47,    0,    0,   53,   53,   59,    0,   67,   18,
+       67,   67,   67,   67,   67,    0,    0,    0,    0,   53,
+       53,   14,   10,   24,   67,   67,   42,   43,    0,    0,
+        0,   53,   53,   67,   41,    0,    0,    0,    0,    0,
+       25,   52,   51,   52,    0,    0,    0,    0,    0,    0,
+       49,   50,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -450,9 +450,9 @@ static yyconst flex_int32_t yy_meta[66] =
         5,    5,    5,    5,    1
     } ;
 
-static yyconst flex_int16_t yy_base[284] =
+static yyconst flex_int16_t yy_base[285] =
     {   0,
-        0,   64,  160,  702,   68,   72,   76,   80,  148,    0,
+        0,   64,  188,  702,   68,   72,   76,   80,  148,    0,
       702,  129,  106,   55,   71,   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,
@@ -470,54 +470,54 @@ static yyconst flex_int16_t yy_base[284] =
       359,  360,  350,  356,    0,  374,    0,    0,    0,  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,    0,    0,  405,  403,    0,
+      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,    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
+      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
     } ;
 
-static yyconst flex_int16_t yy_def[284] =
+static yyconst flex_int16_t yy_def[285] =
     {   0,
-      272,    1,  272,  272,  272,  272,  272,  272,  273,  274,
-      272,  272,  272,  272,  272,  272,  275,  275,  275,  275,
-      275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
-      275,  275,  275,  275,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  273,  272,  276,  272,  277,  272,  272,
-      272,  272,  272,  275,  275,  275,  275,  275,  275,  275,
-      275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
-      275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
-      275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
-      275,  275,  275,  275,  272,  272,  272,  272,  276,  277,
-
-      272,  275,  275,  275,  275,  275,  275,  275,  275,  278,
-      275,  275,  275,  275,  272,  275,  275,  275,  275,  275,
-      275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
-      275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
-      275,  272,  275,  275,  275,  275,  275,  275,  275,  279,
-      280,  275,  275,  275,  275,  272,  275,  275,  275,  275,
-      275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
-      275,  275,  275,  275,  281,  275,  275,  275,  275,  275,
-      272,  275,  275,  275,  282,  280,  275,  275,  275,  272,
-      275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
-
-      275,  281,  281,  281,  275,  275,  272,  275,  275,  282,
-      275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
-      275,  272,  272,  281,  281,  275,  272,  275,  275,  275,
-      275,  275,  275,  275,  272,  272,  272,  272,  281,  281,
-      272,  275,  275,  275,  275,  275,  275,  272,  272,  272,
-      281,  281,  275,  275,  272,  283,  272,  272,  272,  275,
-      272,  283,  272,  272,  272,  272,  272,  272,  272,  283,
-      283,    0,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272
+      273,    1,  273,  273,  273,  273,  273,  273,  274,  275,
+      273,  273,  273,  273,  273,  273,  276,  276,  276,  276,
+      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
+      276,  276,  276,  276,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  274,  273,  277,  273,  278,  273,  273,
+      273,  273,  273,  276,  276,  276,  276,  276,  276,  276,
+      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
+      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
+      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
+      276,  276,  276,  276,  273,  273,  273,  273,  277,  278,
+
+      273,  276,  276,  276,  276,  276,  276,  276,  276,  279,
+      276,  276,  276,  276,  273,  276,  276,  276,  276,  276,
+      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
+      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
+      276,  273,  276,  276,  276,  276,  276,  276,  276,  280,
+      281,  276,  276,  276,  276,  273,  276,  276,  276,  276,
+      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
+      276,  276,  276,  276,  282,  276,  276,  276,  276,  276,
+      273,  276,  276,  276,  283,  281,  276,  276,  276,  273,
+      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
+
+      276,  282,  282,  282,  273,  276,  276,  273,  276,  276,
+      283,  276,  276,  276,  276,  276,  276,  276,  276,  276,
+      276,  276,  273,  273,  282,  282,  276,  273,  276,  276,
+      276,  276,  276,  276,  276,  273,  273,  273,  273,  282,
+      282,  273,  276,  276,  276,  276,  276,  276,  273,  273,
+      273,  282,  282,  276,  276,  273,  284,  273,  273,  273,
+      276,  273,  284,  273,  273,  273,  273,  273,  273,  273,
+      284,  284,    0,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273
     } ;
 
 static yyconst flex_int16_t yy_nxt[768] =
@@ -538,74 +538,74 @@ static yyconst flex_int16_t yy_nxt[768] =
        65,   43,   61,   66,   62,   68,   67,  103,   85,   64,
        76,   71,   69,   86,   63,   72,   73,   47,   70,   77,
        74,   49,   50,   87,   65,   82,   98,   88,  102,   75,
-       68,   83,  103,   45,   84,   76,   69,   78,   86,  272,
-      272,   73,   70,   77,   79,   74,   80,   87,   81,   82,
+       68,   83,  103,   45,   84,   76,   69,   78,   86,  205,
+      205,   73,   70,   77,   79,   74,   80,   87,   81,   82,
        98,   88,  102,   75,   89,   83,  104,   90,   84,   92,
-       93,   41,   78,   91,   41,   94,  150,  272,   79,  150,
-       80,  272,   81,   96,   39,   39,   97,  105,  272,   89,
+       93,   41,   78,   91,   41,   94,  150,  273,   79,  150,
+       80,  273,   81,   96,   39,   39,   97,  105,  273,   89,
 
-       43,  104,   90,  272,   92,   93,  106,   91,  110,   94,
+       43,  104,   90,  273,   92,   93,  106,   91,  110,   94,
        97,   39,   39,   97,   38,   39,   39,   40,   40,   39,
        39,   40,  105,  107,  109,   43,   41,   42,   42,   41,
-      106,  114,  108,  110,  111,  112,  113,  272,  116,  117,
-      118,  272,  119,  120,  121,   43,  127,  107,  109,  122,
-      125,  123,  272,  126,  128,  114,  108,  272,  131,  111,
+      106,  114,  108,  110,  111,  112,  113,  273,  116,  117,
+      118,  273,  119,  120,  121,   43,  127,  107,  109,  122,
+      125,  123,  273,  126,  128,  114,  108,  273,  131,  111,
       112,  113,  116,  117,  132,  118,  119,  120,  124,  121,
        43,  127,  129,  122,  125,  133,  123,  126,  134,  128,
-      136,  130,  131,  135,  137,  138,  272,  140,  132,  139,
-      272,  141,  124,   96,   39,   39,   97,  129,  142,  133,
+      136,  130,  131,  135,  137,  138,  273,  140,  132,  139,
+      273,  141,  124,   96,   39,   39,   97,  129,  142,  133,
 
       143,  147,  134,  144,  136,  130,  145,  146,  135,  137,
       138,  140,  148,  149,  139,  141,   97,   39,   39,   97,
       152,  150,  142,  153,  150,  143,  147,  144,  154,  155,
       145,  146,   54,  157,  115,  160,  148,  115,  149,  158,
-      161,  272,  162,  164,  152,  163,  165,  153,  159,  166,
+      161,  273,  162,  164,  152,  163,  165,  153,  159,  166,
       167,  168,  154,  169,  155,  170,  171,  157,  172,  160,
-      173,  174,  272,  177,  158,  161,  162,  156,  164,  163,
+      173,  174,  273,  177,  158,  161,  162,  156,  164,  163,
       178,  165,  159,  166,  167,  168,  179,  169,  180,  170,
       181,  171,  182,  172,  173,  174,  175,  177,  183,  175,
-      184,  156,  187,  188,  178,  189,  207,  190,  191,  207,
+      184,  156,  187,  188,  178,  189,  208,  190,  191,  208,
 
       192,  179,  193,  180,  194,  181,  182,  195,  196,  197,
       198,  199,  183,  176,  200,  184,  187,  201,  188,  175,
-      189,  190,  175,  191,  192,  205,  193,  206,  194,  208,
-      209,  215,  195,  196,  197,  198,  199,  176,  200,  211,
-      212,  201,  213,  214,  203,  216,  272,  217,  218,  219,
-      205,  204,  206,  220,  208,  209,  215,  221,  272,  272,
-      272,  226,  228,  211,  212,  230,  213,  214,  203,  229,
-      216,  217,  218,  219,  222,  204,  222,  222,  220,  222,
-      222,  221,  223,  222,  223,  226,  228,  233,  223,  207,
-      230,  224,  207,  229,  231,  232,  235,  234,  222,  235,
-
-      222,  222,  236,  222,  242,  272,  223,  241,  223,  246,
-      225,  233,  227,  243,  236,  244,  224,  238,  245,  231,
-      232,  234,  247,  235,  237,  248,  235,  236,  242,  238,
-      239,  240,  241,  246,  225,  249,  250,  227,  243,  236,
-      244,  238,  253,  245,  222,  254,  247,  222,  237,  255,
-      248,  237,  223,  238,  239,  240,  222,  257,  261,  222,
-      249,  250,  256,  272,  223,  256,  253,  260,  258,  254,
-      263,  258,  272,  255,  272,  237,  223,  251,  272,  259,
-      268,  257,  259,  261,  269,  256,  272,  223,  256,  252,
-      264,  260,  272,  264,  266,  263,  272,  266,  272,  272,
-
-      264,  251,  272,  264,  266,  268,  272,  266,  236,  269,
-      272,  270,  236,  252,  270,  272,  271,  270,  265,  271,
-      270,  271,  267,  238,  271,  272,  272,  238,  265,  272,
-      272,  272,  267,  236,  272,  272,  272,  236,  272,  272,
-      272,  272,  265,  272,  272,  272,  267,  238,  272,  272,
-      272,  238,  265,  272,  272,  272,  267,   44,   44,  272,
+      189,  190,  175,  191,  192,  206,  193,  207,  194,  209,
+      210,  216,  195,  196,  197,  198,  199,  176,  200,  212,
+      213,  201,  214,  215,  203,  217,  273,  218,  219,  220,
+      206,  204,  207,  221,  209,  210,  216,  222,  205,  205,
+      273,  227,  229,  212,  213,  231,  214,  215,  203,  230,
+      217,  218,  219,  220,  223,  204,  223,  223,  221,  223,
+      223,  222,  224,  223,  224,  227,  229,  234,  224,  208,
+      231,  225,  208,  230,  232,  233,  236,  235,  223,  236,
+
+      223,  223,  237,  223,  243,  273,  224,  242,  224,  247,
+      226,  234,  228,  244,  237,  245,  225,  239,  246,  232,
+      233,  235,  248,  236,  238,  249,  236,  237,  243,  239,
+      240,  241,  242,  247,  226,  250,  251,  228,  244,  237,
+      245,  239,  254,  246,  223,  255,  248,  223,  238,  256,
+      249,  238,  224,  239,  240,  241,  223,  258,  262,  223,
+      250,  251,  257,  273,  224,  257,  254,  261,  259,  255,
+      264,  259,  273,  256,  273,  238,  224,  252,  273,  260,
+      269,  258,  260,  262,  270,  257,  273,  224,  257,  253,
+      265,  261,  273,  265,  267,  264,  273,  267,  273,  273,
+
+      265,  252,  273,  265,  267,  269,  273,  267,  237,  270,
+      273,  271,  237,  253,  271,  273,  272,  271,  266,  272,
+      271,  272,  268,  239,  272,  273,  273,  239,  266,  273,
+      273,  273,  268,  237,  273,  273,  273,  237,  273,  273,
+      273,  273,  266,  273,  273,  273,  268,  239,  273,  273,
+      273,  239,  266,  273,  273,  273,  268,   44,   44,  273,
        44,   44,   44,   46,   46,   54,   54,   54,   99,   99,
-       99,  100,  100,  272,  100,  100,  100,  151,  272,  151,
-      151,  151,  185,  272,  272,  185,  185,  186,  186,  186,
-      202,  272,  272,  202,  210,  210,  210,  262,  272,  272,
-
-      262,    3,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  272,  272
+       99,  100,  100,  273,  100,  100,  100,  151,  273,  151,
+      151,  151,  185,  273,  273,  185,  185,  186,  186,  186,
+      202,  273,  273,  202,  211,  211,  211,  263,  273,  273,
+
+      263,    3,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273
     } ;
 
 static yyconst flex_int16_t yy_chk[768] =
@@ -626,10 +626,10 @@ static yyconst flex_int16_t yy_chk[768] =
        22,    7,   21,   23,   21,   25,   23,   56,   31,   22,
        28,   26,   25,   32,   21,   26,   27,   12,   25,   28,
        27,   50,   50,   32,   22,   30,   43,   32,   55,   27,
-       25,   30,   56,    9,   30,   28,   25,   29,   32,    3,
-        0,   27,   25,   28,   29,   27,   29,   32,   29,   30,
+       25,   30,   56,    9,   30,   28,   25,   29,   32,  176,
+      176,   27,   25,   28,   29,   27,   29,   32,   29,   30,
        43,   32,   55,   27,   33,   30,   57,   33,   30,   34,
-       34,   41,   29,   33,   41,   34,  150,    0,   29,  150,
+       34,   41,   29,   33,   41,   34,  150,    3,   29,  150,
        29,    0,   29,   36,   36,   36,   36,   58,    0,   33,
 
        41,   57,   33,    0,   34,   34,   59,   33,   62,   34,
@@ -659,41 +659,41 @@ static yyconst flex_int16_t yy_chk[768] =
       155,  156,  175,  157,  158,  178,  163,  179,  164,  183,
       184,  194,  165,  168,  169,  170,  171,  137,  172,  187,
       189,  173,  191,  192,  175,  196,    0,  197,  198,  199,
-      178,  175,  179,  200,  183,  184,  194,  201,    0,    0,
-        0,  206,  209,  187,  189,  213,  191,  192,  175,  211,
+      178,  175,  179,  200,  183,  184,  194,  201,  205,  205,
+        0,  207,  210,  187,  189,  214,  191,  192,  175,  212,
       196,  197,  198,  199,  202,  175,  203,  202,  200,  203,
-      204,  201,  202,  204,  203,  206,  209,  217,  204,  207,
-      213,  203,  207,  211,  214,  216,  222,  218,  224,  222,
-
-      225,  224,  223,  225,  228,    0,  224,  227,  225,  233,
-      204,  217,  207,  230,  222,  231,  203,  223,  232,  214,
-      216,  218,  234,  235,  222,  236,  235,  223,  228,  222,
-      224,  225,  227,  233,  204,  237,  238,  207,  230,  222,
-      231,  223,  244,  232,  239,  245,  234,  239,  222,  248,
-      236,  235,  239,  222,  224,  225,  240,  250,  255,  240,
-      237,  238,  249,    0,  240,  249,  244,  253,  251,  245,
-      257,  251,    0,  248,    0,  235,  251,  239,    0,  252,
-      265,  250,  252,  255,  267,  256,    0,  252,  256,  240,
-      258,  253,    0,  258,  259,  257,  262,  259,    0,  262,
-
-      264,  239,    0,  264,  266,  265,    0,  266,  258,  267,
-        0,  268,  259,  240,  268,    0,  269,  270,  258,  269,
-      270,  271,  259,  258,  271,    0,    0,  259,  264,    0,
-        0,    0,  266,  258,    0,    0,    0,  259,    0,    0,
-        0,    0,  258,    0,    0,    0,  259,  258,    0,    0,
-        0,  259,  264,    0,    0,    0,  266,  273,  273,    0,
-      273,  273,  273,  274,  274,  275,  275,  275,  276,  276,
-      276,  277,  277,    0,  277,  277,  277,  278,    0,  278,
-      278,  278,  279,    0,    0,  279,  279,  280,  280,  280,
-      281,    0,    0,  281,  282,  282,  282,  283,    0,    0,
-
-      283,  272,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  272,  272
+      204,  201,  202,  204,  203,  207,  210,  218,  204,  208,
+      214,  203,  208,  212,  215,  217,  223,  219,  225,  223,
+
+      226,  225,  224,  226,  229,    0,  225,  228,  226,  234,
+      204,  218,  208,  231,  223,  232,  203,  224,  233,  215,
+      217,  219,  235,  236,  223,  237,  236,  224,  229,  223,
+      225,  226,  228,  234,  204,  238,  239,  208,  231,  223,
+      232,  224,  245,  233,  240,  246,  235,  240,  223,  249,
+      237,  236,  240,  223,  225,  226,  241,  251,  256,  241,
+      238,  239,  250,    0,  241,  250,  245,  254,  252,  246,
+      258,  252,    0,  249,    0,  236,  252,  240,    0,  253,
+      266,  251,  253,  256,  268,  257,    0,  253,  257,  241,
+      259,  254,    0,  259,  260,  258,  263,  260,    0,  263,
+
+      265,  240,    0,  265,  267,  266,    0,  267,  259,  268,
+        0,  269,  260,  241,  269,    0,  270,  271,  259,  270,
+      271,  272,  260,  259,  272,    0,    0,  260,  265,    0,
+        0,    0,  267,  259,    0,    0,    0,  260,    0,    0,
+        0,    0,  259,    0,    0,    0,  260,  259,    0,    0,
+        0,  260,  265,    0,    0,    0,  267,  274,  274,    0,
+      274,  274,  274,  275,  275,  276,  276,  276,  277,  277,
+      277,  278,  278,    0,  278,  278,  278,  279,    0,  279,
+      279,  279,  280,    0,    0,  280,  280,  281,  281,  281,
+      282,    0,    0,  282,  283,  283,  283,  284,    0,    0,
+
+      284,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1021,7 +1021,7 @@ 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 >= 273 )
+				if ( yy_current_state >= 274 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1436,63 +1436,69 @@ YY_RULE_SETUP
 { count(); return tTHEN; }
 	YY_BREAK
 case 55:
+/* rule 55 can match eol */
 YY_RULE_SETUP
 #line 254 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTO; }
+{ count(); return tTHENNL; }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 255 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSPRITE; }
+{ count(); return tTO; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 256 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITH; }
+{ count(); return tSPRITE; }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 257 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITHIN; }
+{ count(); return tWITH; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 258 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHEN; }
+{ count(); return tWITHIN; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 259 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHILE; }
+{ count(); return tWHEN; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 260 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWORD; }
+{ count(); return tWHILE; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 262 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNEQ; }
+#line 261 "engines/director/lingo/lingo-lex.l"
+{ count(); return tWORD; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 263 "engines/director/lingo/lingo-lex.l"
-{ count(); return tGE; }
+{ count(); return tNEQ; }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 264 "engines/director/lingo/lingo-lex.l"
-{ count(); return tLE; }
+{ count(); return tGE; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 265 "engines/director/lingo/lingo-lex.l"
-{ count(); return tCONCAT; }
+{ count(); return tLE; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 267 "engines/director/lingo/lingo-lex.l"
+#line 266 "engines/director/lingo/lingo-lex.l"
+{ count(); return tCONCAT; }
+	YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 268 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1539,43 +1545,43 @@ YY_RULE_SETUP
 		return ID;
 	}
 	YY_BREAK
-case 67:
-YY_RULE_SETUP
-#line 312 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.f = atof(yytext); return FLOAT; }
-	YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 313 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
+{ count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 314 "engines/director/lingo/lingo-lex.l"
-{ count(); return *yytext; }
+{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 70:
-/* rule 70 can match eol */
 YY_RULE_SETUP
 #line 315 "engines/director/lingo/lingo-lex.l"
-{ return '\n'; }
+{ count(); return *yytext; }
 	YY_BREAK
 case 71:
+/* rule 71 can match eol */
 YY_RULE_SETUP
 #line 316 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
+{ return '\n'; }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 317 "engines/director/lingo/lingo-lex.l"
-{ count(); }
+{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 319 "engines/director/lingo/lingo-lex.l"
+#line 318 "engines/director/lingo/lingo-lex.l"
+{ count(); }
+	YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 320 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1579 "engines/director/lingo/lingo-lex.cpp"
+#line 1585 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -1868,7 +1874,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 >= 273 )
+			if ( yy_current_state >= 274 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1896,11 +1902,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 >= 273 )
+		if ( yy_current_state >= 274 )
 			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 == 272);
+	yy_is_jam = (yy_current_state == 273);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2538,7 +2544,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 319 "engines/director/lingo/lingo-lex.l"
+#line 320 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 6a38bac..1defb05 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -251,6 +251,7 @@ 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; }


Commit: e135dad5ac0897edc30586668da256323561147a
    https://github.com/scummvm/scummvm/commit/e135dad5ac0897edc30586668da256323561147a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-29T22:17:18+02:00

Commit Message:
DIRECTOR: Lingo: Added another if statement variant

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 a409256..b8d9749 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  124
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1822
+#define YYLAST   1792
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  106
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  43
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  163
+#define YYNRULES  164
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  357
+#define YYNSTATES  360
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -606,20 +606,20 @@ static const yytype_uint16 yyprhs[] =
        0,     0,     3,     7,     9,    12,    14,    15,    17,    19,
       21,    26,    31,    36,    41,    46,    51,    57,    62,    67,
       73,    75,    77,    79,    81,    89,   100,   112,   116,   123,
-     128,   135,   145,   155,   162,   173,   184,   185,   189,   192,
-     194,   197,   199,   206,   208,   215,   217,   221,   225,   228,
-     232,   234,   236,   237,   238,   239,   242,   245,   249,   251,
-     253,   255,   257,   259,   261,   264,   267,   272,   277,   279,
-     281,   284,   286,   290,   294,   298,   302,   306,   310,   314,
-     318,   322,   326,   330,   334,   337,   341,   345,   349,   353,
-     356,   359,   363,   367,   372,   377,   382,   389,   394,   401,
-     406,   413,   418,   425,   428,   431,   433,   435,   438,   440,
-     443,   446,   449,   451,   454,   457,   459,   462,   467,   472,
-     479,   484,   487,   491,   493,   497,   499,   503,   505,   509,
-     512,   515,   518,   521,   525,   528,   531,   533,   537,   540,
-     543,   546,   550,   553,   554,   558,   559,   568,   571,   572,
-     581,   589,   596,   599,   600,   602,   606,   611,   612,   615,
-     616,   618,   622,   624
+     128,   135,   145,   155,   165,   172,   183,   194,   195,   199,
+     202,   204,   207,   209,   216,   218,   225,   227,   231,   235,
+     238,   242,   244,   246,   247,   248,   249,   252,   255,   259,
+     261,   263,   265,   267,   269,   271,   274,   277,   282,   287,
+     289,   291,   294,   296,   300,   304,   308,   312,   316,   320,
+     324,   328,   332,   336,   340,   344,   347,   351,   355,   359,
+     363,   366,   369,   373,   377,   382,   387,   392,   399,   404,
+     411,   416,   423,   428,   435,   438,   441,   443,   445,   448,
+     450,   453,   456,   459,   461,   464,   467,   469,   472,   477,
+     482,   489,   494,   497,   501,   503,   507,   509,   513,   515,
+     519,   522,   525,   528,   531,   535,   538,   541,   543,   547,
+     550,   553,   556,   560,   563,   564,   568,   569,   578,   581,
+     582,   591,   599,   606,   609,   610,   612,   616,   621,   622,
+     625,   626,   628,   632,   634
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -640,7 +640,8 @@ static const yytype_int16 yyrhs[] =
      125,    32,    -1,   128,   129,    54,   129,    -1,   122,   119,
       53,   126,   125,    32,    -1,   122,   119,    53,   126,   125,
       58,   126,   125,    32,    -1,   122,   119,    53,   126,   125,
-     124,   115,   125,    32,    -1,   122,   119,    52,   124,   111,
+     124,   115,   125,    32,    -1,   122,   119,    53,   126,   125,
+      58,   124,   111,   125,    -1,   122,   119,    52,   124,   111,
      125,    -1,   122,   119,    52,   124,   111,   125,    58,   124,
      111,   125,    -1,   122,   119,    52,   124,   111,   125,   116,
      125,   114,   125,    -1,    -1,    58,   124,   111,    -1,   115,
@@ -696,20 +697,20 @@ static const yytype_uint16 yyrline[] =
        0,   119,   119,   120,   121,   124,   129,   130,   131,   132,
      135,   141,   144,   145,   146,   152,   160,   168,   174,   182,
      192,   193,   196,   197,   202,   215,   233,   247,   253,   256,
-     261,   271,   283,   295,   305,   315,   327,   328,   331,   332,
-     335,   336,   339,   347,   348,   356,   357,   358,   361,   364,
-     371,   378,   386,   389,   392,   393,   394,   397,   403,   407,
-     408,   411,   414,   417,   420,   423,   424,   425,   428,   432,
-     439,   445,   446,   447,   448,   449,   450,   451,   452,   453,
-     454,   455,   456,   457,   458,   459,   460,   461,   462,   463,
-     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
-     474,   475,   476,   479,   484,   485,   486,   487,   488,   489,
-     490,   491,   492,   495,   498,   501,   505,   506,   507,   508,
-     509,   510,   511,   514,   515,   518,   519,   522,   523,   534,
-     535,   536,   537,   540,   543,   548,   549,   552,   553,   556,
-     557,   560,   563,   566,   566,   596,   596,   601,   604,   604,
-     609,   617,   624,   626,   627,   628,   629,   632,   636,   644,
-     645,   646,   649,   650
+     261,   271,   283,   295,   305,   315,   325,   337,   338,   341,
+     342,   345,   346,   349,   357,   358,   366,   367,   368,   371,
+     374,   381,   388,   396,   399,   402,   403,   404,   407,   413,
+     417,   418,   421,   424,   427,   430,   433,   434,   435,   438,
+     442,   449,   455,   456,   457,   458,   459,   460,   461,   462,
+     463,   464,   465,   466,   467,   468,   469,   470,   471,   472,
+     473,   474,   475,   476,   477,   478,   479,   480,   481,   482,
+     483,   484,   485,   486,   489,   494,   495,   496,   497,   498,
+     499,   500,   501,   502,   505,   508,   511,   515,   516,   517,
+     518,   519,   520,   521,   524,   525,   528,   529,   532,   533,
+     544,   545,   546,   547,   550,   553,   558,   559,   562,   563,
+     566,   567,   570,   573,   576,   576,   606,   606,   611,   614,
+     614,   619,   627,   634,   636,   637,   638,   639,   642,   646,
+     654,   655,   656,   659,   660
 };
 #endif
 
@@ -769,20 +770,20 @@ static const yytype_uint8 yyr1[] =
        0,   106,   107,   107,   107,   108,   109,   109,   109,   109,
      110,   110,   110,   110,   110,   110,   110,   110,   110,   110,
      111,   111,   112,   112,   112,   112,   112,   112,   112,   112,
-     113,   113,   113,   113,   113,   113,   114,   114,   115,   115,
-     116,   116,   117,   118,   118,   119,   119,   119,   120,   121,
-     122,   123,   124,   125,   126,   126,   126,   127,   128,   129,
+     113,   113,   113,   113,   113,   113,   113,   114,   114,   115,
+     115,   116,   116,   117,   118,   118,   119,   119,   119,   120,
+     121,   122,   123,   124,   125,   126,   126,   126,   127,   128,
      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     129,   129,   129,   130,   131,   131,   131,   131,   131,   131,
+     129,   129,   129,   129,   130,   131,   131,   131,   131,   131,
      131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
-     131,   131,   131,   132,   132,   133,   133,   134,   134,   135,
-     135,   135,   135,   135,   135,   136,   136,   137,   137,   138,
-     138,   138,   138,   139,   138,   141,   140,   140,   142,   140,
-     140,   140,   143,   144,   144,   144,   144,   145,   146,   147,
-     147,   147,   148,   148
+     131,   131,   131,   131,   132,   132,   133,   133,   134,   134,
+     135,   135,   135,   135,   135,   135,   136,   136,   137,   137,
+     138,   138,   138,   138,   139,   138,   141,   140,   140,   142,
+     140,   140,   140,   143,   144,   144,   144,   144,   145,   146,
+     147,   147,   147,   148,   148
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -791,20 +792,20 @@ static const yytype_uint8 yyr2[] =
        0,     2,     3,     1,     2,     1,     0,     1,     1,     1,
        4,     4,     4,     4,     4,     4,     5,     4,     4,     5,
        1,     1,     1,     1,     7,    10,    11,     3,     6,     4,
-       6,     9,     9,     6,    10,    10,     0,     3,     2,     1,
-       2,     1,     6,     1,     6,     1,     3,     3,     2,     3,
-       1,     1,     0,     0,     0,     2,     2,     3,     1,     1,
-       1,     1,     1,     1,     2,     2,     4,     4,     1,     1,
-       2,     1,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     2,     3,     3,     3,     3,     2,
-       2,     3,     3,     4,     4,     4,     6,     4,     6,     4,
-       6,     4,     6,     2,     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,
-       7,     6,     2,     0,     1,     3,     4,     0,     2,     0,
-       1,     3,     1,     3
+       6,     9,     9,     9,     6,    10,    10,     0,     3,     2,
+       1,     2,     1,     6,     1,     6,     1,     3,     3,     2,
+       3,     1,     1,     0,     0,     0,     2,     2,     3,     1,
+       1,     1,     1,     1,     1,     2,     2,     4,     4,     1,
+       1,     2,     1,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     2,     3,     3,     3,     3,
+       2,     2,     3,     3,     4,     4,     4,     6,     4,     6,
+       4,     6,     4,     6,     2,     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,     7,     6,     2,     0,     1,     3,     4,     0,     2,
+       0,     1,     3,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -812,49 +813,49 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    59,    69,     0,    60,   112,   115,     0,     0,
-       0,    63,     0,     0,    68,    62,    61,   143,   108,     0,
-       0,    50,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    58,     0,
-       0,     0,     0,     0,     0,   159,     0,     3,    71,    22,
-       9,    23,     0,     0,     0,     0,     0,    20,    21,   105,
-     106,     7,    52,     8,     5,     4,    68,     0,    70,   114,
-     113,     0,   162,   116,   159,    64,     0,    65,   159,   158,
-     159,   107,   123,   109,     0,   129,     0,   130,     0,   131,
-     136,   132,   134,   145,   104,     0,    48,     0,     0,     0,
-       0,   147,   148,   121,   139,   140,   142,   127,   111,    84,
-       0,     0,     0,     0,     0,   125,   110,   152,     0,    89,
-      90,     0,   160,     0,     1,     6,     0,     0,     0,     0,
-      45,    53,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   153,
-     159,     0,   162,     0,     0,   122,     0,   160,     0,   144,
-       0,   135,   138,     0,   133,    52,     0,     0,     0,    49,
-       0,     0,     0,     0,     0,    57,    52,     0,   141,     0,
+       0,     0,    60,    70,     0,    61,   113,   116,     0,     0,
+       0,    64,     0,     0,    69,    63,    62,   144,   109,     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,   160,     0,     3,    72,    22,
+       9,    23,     0,     0,     0,     0,     0,    20,    21,   106,
+     107,     7,    53,     8,     5,     4,    69,     0,    71,   115,
+     114,     0,   163,   117,   160,    65,     0,    66,   160,   159,
+     160,   108,   124,   110,     0,   130,     0,   131,     0,   132,
+     137,   133,   135,   146,   105,     0,    49,     0,     0,     0,
+       0,   148,   149,   122,   140,   141,   143,   128,   112,    85,
+       0,     0,     0,     0,     0,   126,   111,   153,     0,    90,
+      91,     0,   161,     0,     1,     6,     0,     0,     0,     0,
+      46,    54,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   154,
+     160,     0,   163,     0,     0,   123,     0,   161,     0,   145,
+       0,   136,   139,     0,   134,    53,     0,     0,     0,    50,
+       0,     0,     0,     0,     0,    58,    53,     0,   142,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    91,    92,     0,     2,     0,    53,     0,     0,
-      52,    54,     0,    27,     0,    54,    80,    81,    79,    82,
-      83,    76,    86,    87,    88,    85,    72,    73,    74,    75,
-      77,    78,   154,     0,   117,   163,    66,    67,   124,   137,
-     153,     0,    10,    11,    12,    13,    18,    15,     0,     0,
-      17,    14,   153,   120,   128,    95,     0,    97,     0,    99,
-       0,   101,     0,    93,    94,   126,   118,   159,   161,    54,
-       0,    47,     0,    53,    46,    29,    53,     0,   157,     0,
-     103,    19,    16,     0,     0,     0,     0,     0,     0,    53,
-       0,     0,    53,    55,    56,    52,     0,   155,     0,    54,
-     157,   157,    96,    98,   100,   102,   119,     0,     0,    53,
-      33,    30,    54,     0,    28,   156,   151,    54,    54,    24,
-      53,    54,    51,    52,    53,    41,     0,    53,    53,    43,
-      39,     0,   150,   146,   149,    54,    53,     0,    40,    36,
-       0,     0,    38,     0,     0,    53,     0,    53,    52,    53,
-      52,    31,    32,    52,     0,    25,    34,     0,    35,     0,
-      54,    26,    37,    53,    53,    42,    44
+       0,     0,    92,    93,     0,     2,     0,    54,     0,     0,
+      53,    55,     0,    27,     0,    55,    81,    82,    80,    83,
+      84,    77,    87,    88,    89,    86,    73,    74,    75,    76,
+      78,    79,   155,     0,   118,   164,    67,    68,   125,   138,
+     154,     0,    10,    11,    12,    13,    18,    15,     0,     0,
+      17,    14,   154,   121,   129,    96,     0,    98,     0,   100,
+       0,   102,     0,    94,    95,   127,   119,   160,   162,    55,
+       0,    48,     0,    54,    47,    29,    54,     0,   158,     0,
+     104,    19,    16,     0,     0,     0,     0,     0,     0,    54,
+       0,     0,    54,    56,    57,    53,     0,   156,     0,    55,
+     158,   158,    97,    99,   101,   103,   120,     0,     0,    54,
+      34,    30,    53,     0,    28,   157,   152,    55,    55,    24,
+      54,    55,    52,    53,    54,    42,     0,     0,    54,    54,
+      44,    40,     0,   151,   147,   150,    55,    54,     0,    41,
+      37,     0,    54,     0,    39,     0,     0,    54,     0,    54,
+      53,    54,    53,    33,    31,    32,    53,     0,    25,    35,
+       0,    36,     0,    55,    26,    38,    54,    54,    43,    45
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    46,   283,    47,    48,    49,   284,    51,   339,   318,
-     319,   315,   320,   129,    52,    53,    54,   316,   149,   203,
+      -1,    46,   283,    47,    48,    49,   284,    51,   341,   319,
+     320,   315,   321,   129,    52,    53,    54,   316,   149,   203,
      263,    55,    56,    57,   233,    58,    83,   116,   108,    59,
       91,    92,    60,    80,    61,   165,   176,    62,   223,   289,
       63,   158,    73
@@ -862,229 +863,226 @@ static const yytype_int16 yydefgoto[] =
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -265
+#define YYPACT_NINF -281
 static const yytype_int16 yypact[] =
 {
-     345,   -70,  -265,  -265,  1002,  -265,  -265,  1002,  1002,  1042,
-      14,  -265,  1002,  1115,  1155,  -265,  -265,  -265,    20,    54,
-     888,  -265,    58,  1002,    40,    35,    62,    66,    72,  1002,
-     929,    83,  1002,  1002,  1002,  1002,  1002,  1002,  -265,    84,
-      87,    17,  1002,  1002,  1002,  1002,     3,  -265,  -265,  -265,
-    -265,  -265,    19,    28,  1228,   805,  1002,  1720,  -265,  -265,
-    -265,  -265,  -265,  -265,  -265,  -265,    21,  1002,  1720,  1720,
-    1720,  1002,  1720,    16,  1002,  1720,  1002,    16,  1002,    16,
-    1002,  -265,  -265,    25,  1002,  -265,  1002,  -265,    77,  -265,
-    1720,    13,  -265,  -265,  1258,    95,  -265,   -38,  1002,   -32,
-      74,  -265,  -265,  1555,  -265,    13,  -265,  -265,    27,   -50,
-    1291,  1324,  1357,  1390,  1588,  -265,    47,  -265,    96,   -50,
-     -50,  1654,  1720,    -2,  -265,   437,  1228,  1002,  1228,    52,
-    1687,  -265,   781,  1002,  1002,  1002,  1002,  1002,  1002,  1002,
-    1002,  1002,  1002,  1002,  1002,  1002,  1002,  1002,  1002,   105,
-    1002,  1258,  1654,   -82,  1002,    48,   -39,  1654,   -31,    48,
-     126,  1720,  1720,  1002,  -265,  -265,    79,  1002,  1002,  -265,
-    1002,  1002,  1522,  1002,  1002,  -265,  -265,  1002,  -265,   129,
-    1002,  1002,  1002,  1002,  1002,  1002,  1002,  1002,  1002,  1002,
-     130,   -16,  -265,  -265,  1002,  -265,    59,  1720,    60,  1621,
-    -265,  -265,  1002,  -265,  1002,  -265,   151,   151,   151,   -50,
-     -50,   -50,  1720,   151,   151,   231,   947,   947,   -50,   -50,
-    1720,  1720,  -265,   -25,  -265,  1720,  -265,  -265,  -265,  1720,
-     105,  1002,  -265,  -265,  1720,  1720,  1720,  1720,  1002,  1002,
-    1720,  1720,   105,  1720,  -265,  1720,  1197,  1720,  1423,  1720,
-    1456,  1720,  1489,  1720,  1720,  -265,  -265,  1002,  1720,  -265,
-     -14,  -265,   805,   621,  1720,  1720,   621,   133,    57,   -25,
-    1720,  1720,  1720,   -25,  1002,  1002,  1002,  1002,    -7,   621,
-     109,  1002,  -265,  -265,  -265,   -26,   134,  -265,   137,  -265,
-      57,    57,  1720,  1720,  1720,  1720,  -265,   135,  1002,  1720,
-     -29,  -265,  -265,   141,  -265,  -265,   529,  -265,  -265,  -265,
-    1720,  -265,  -265,  -265,   141,  -265,  1228,   621,   141,   141,
-    -265,  1228,  -265,   621,   621,  -265,   621,   805,  -265,   112,
-     121,   147,  -265,   148,   139,   621,   161,  -265,  -265,  -265,
-    -265,  -265,  -265,  -265,   162,  -265,  -265,   805,  -265,   713,
-     713,  -265,  -265,  -265,   621,  -265,  -265
+     348,   -80,  -281,  -281,  1005,  -281,  -281,  1005,  1005,  1045,
+      22,  -281,  1005,  1118,  1158,  -281,  -281,  -281,   -22,    30,
+     891,  -281,    33,  1005,    46,    35,    42,    48,    52,  1005,
+     932,    54,  1005,  1005,  1005,  1005,  1005,  1005,  -281,    58,
+      62,   -25,  1005,  1005,  1005,  1005,     3,  -281,  -281,  -281,
+    -281,  -281,    -5,     9,  1231,   808,  1005,  1690,  -281,  -281,
+    -281,  -281,  -281,  -281,  -281,  -281,    -3,  1005,  1690,  1690,
+    1690,  1005,  1690,     6,  1005,  1690,  1005,     6,  1005,     6,
+    1005,  -281,  -281,    11,  1005,  -281,  1005,  -281,    81,  -281,
+    1690,    26,  -281,  -281,  1261,   105,  -281,   -38,  1005,   -32,
+     101,  -281,  -281,   151,  -281,    26,  -281,  -281,    49,   -50,
+    1294,  1327,  1360,  1393,  1558,  -281,    51,  -281,   129,   -50,
+     -50,  1624,  1690,    14,  -281,   440,  1231,  1005,  1231,    69,
+    1657,  -281,   784,  1005,  1005,  1005,  1005,  1005,  1005,  1005,
+    1005,  1005,  1005,  1005,  1005,  1005,  1005,  1005,  1005,   130,
+    1005,  1261,  1624,   -16,  1005,    55,    -7,  1624,     4,    55,
+     133,  1690,  1690,  1005,  -281,  -281,    96,  1005,  1005,  -281,
+    1005,  1005,  1525,  1005,  1005,  -281,  -281,  1005,  -281,   134,
+    1005,  1005,  1005,  1005,  1005,  1005,  1005,  1005,  1005,  1005,
+     137,     5,  -281,  -281,  1005,  -281,    66,  1690,    67,  1591,
+    -281,  -281,  1005,  -281,  1005,  -281,   950,   950,   950,   -50,
+     -50,   -50,  1690,   950,   950,   231,  1063,  1063,   -50,   -50,
+    1690,  1690,  -281,   -36,  -281,  1690,  -281,  -281,  -281,  1690,
+     130,  1005,  -281,  -281,  1690,  1690,  1690,  1690,  1005,  1005,
+    1690,  1690,   130,  1690,  -281,  1690,  1200,  1690,  1426,  1690,
+    1459,  1690,  1492,  1690,  1690,  -281,  -281,  1005,  1690,  -281,
+     -14,  -281,   808,   624,  1690,  1690,   624,   142,    68,   -36,
+    1690,  1690,  1690,   -36,  1005,  1005,  1005,  1005,     7,   624,
+     123,  1005,  -281,  -281,  -281,   -26,   147,  -281,   152,  -281,
+      68,    68,  1690,  1690,  1690,  1690,  -281,   159,  1005,  1690,
+     -29,  -281,    65,   158,  -281,  -281,   532,  -281,  -281,  -281,
+    1690,  -281,  -281,  -281,   158,  -281,  1231,   808,   624,   158,
+     158,  -281,  1231,  -281,   624,   624,  -281,   624,   808,  -281,
+     138,   145,  -281,   168,  -281,   169,   150,   624,   174,  -281,
+    -281,  -281,  -281,  -281,  -281,  -281,  -281,   177,  -281,  -281,
+     808,  -281,   716,   716,  -281,  -281,  -281,   624,  -281,  -281
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -265,  -265,    18,    71,  -265,   -54,     0,  -265,  -265,  -265,
-    -102,  -243,  -118,  -124,  -265,  -265,  -265,  -264,  -109,     2,
-    -194,  -265,  -265,     1,  -265,  -265,  -265,  -265,  -265,  -265,
-     171,   -13,  -265,  -265,  -265,  -265,  -265,  -265,  -180,  -181,
-    -265,   -33,    12
+    -281,  -281,    18,    85,  -281,   -54,     0,  -281,  -281,  -281,
+     -89,  -254,  -107,  -124,  -281,  -281,  -281,  -280,  -109,     2,
+    -194,  -281,  -281,     1,  -281,  -281,  -281,  -281,  -281,  -281,
+     183,   -13,  -281,  -281,  -281,  -281,  -281,  -281,  -188,  -160,
+    -281,   -33,    12
 };
 
 /* 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 -7
+#define YYTABLE_NINF -56
 static const yytype_int16 yytable[] =
 {
       50,   131,   196,   124,   198,    68,   301,   312,    69,    70,
-      72,   266,   123,    75,    72,    72,   170,   106,   224,    65,
-     280,    90,   173,   154,    94,    77,    79,   139,    64,   313,
-     103,    90,   302,   109,   110,   111,   112,   113,   114,   321,
-     281,   155,    74,   119,   120,   121,   122,   159,    97,    98,
-     269,   147,   148,   171,   321,   130,   230,   132,    86,   174,
-      88,   226,   273,    99,   125,   279,   154,   242,   151,   227,
-      81,   328,   152,    64,   194,   122,   328,   152,   164,   157,
-     267,   122,    82,   153,   256,   161,    93,   162,   156,   257,
-     100,   262,   178,   296,   101,   306,    95,    96,   194,   172,
-     102,    64,   193,   194,   200,   201,   231,   232,   317,   307,
-     308,   107,   115,   323,   324,   117,   118,   326,   126,   127,
-     150,   154,   163,   169,   191,    50,   175,   130,   197,   199,
-     160,   335,   179,   222,   206,   207,   208,   209,   210,   211,
+      72,   266,   123,    75,    72,    72,   170,   106,    64,    65,
+     280,    90,   173,   322,    94,    77,    79,   139,    81,   313,
+     103,    90,   302,   109,   110,   111,   112,   113,   114,   322,
+     281,   155,   269,   119,   120,   121,   122,   159,    97,    98,
+      74,   147,   148,   171,   273,   130,   230,   132,    82,   174,
+     329,    93,    64,    99,   125,   279,   329,   242,   151,   267,
+     100,    86,   152,    88,   118,   122,   101,   152,   164,   157,
+     102,   122,   107,   153,   224,   161,   115,   162,   156,   154,
+     117,   262,   178,   226,   126,   306,   150,   -55,   154,   172,
+     127,    64,    95,    96,   227,   256,   -55,   296,   318,   194,
+     257,   154,   194,   324,   325,   -55,   160,   327,   193,   194,
+     -55,   200,   201,   231,   232,    50,   163,   130,   197,   199,
+     307,   308,   337,   169,   206,   207,   208,   209,   210,   211,
      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-     205,   122,   190,   194,   228,   225,   354,   244,   255,   259,
-     261,   287,   288,   298,   229,   305,   304,   309,   234,   235,
-     338,   236,   237,   340,   240,   241,   303,   312,   243,   341,
-     342,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   343,   330,   345,   351,   258,   195,   334,   314,   260,
-     332,   105,     0,   264,   327,   265,     0,     0,   282,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   136,   137,   278,   138,     0,     0,   139,   347,
-       0,   349,   270,     0,   350,     0,     0,     0,     0,   271,
+     205,   122,   -55,   175,   179,   225,   190,   191,   222,   357,
+     194,   228,   244,   -55,   229,   255,   259,   261,   234,   235,
+     287,   236,   237,   288,   240,   241,   303,   298,   243,   304,
+     305,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   309,   331,   317,   312,   258,   340,   342,   336,   260,
+     344,   345,   346,   264,   328,   265,   348,   177,   282,   354,
+     195,   314,   334,   105,     0,     0,   133,   134,     0,     0,
+       0,   135,   136,   137,   278,   138,     0,     0,   139,   140,
+     141,   350,   270,   352,     0,     0,     0,   353,     0,   271,
      272,   268,     0,   142,   143,   144,   145,   146,     0,     0,
        0,     0,   147,   148,     0,     0,     0,     0,   122,     0,
-       0,     0,     0,     0,     0,   285,     0,     0,   286,     0,
-       0,     0,     0,   337,     0,   292,   293,   294,   295,     0,
+       0,     0,     0,   332,     0,   285,     0,     0,   286,     0,
+       0,     0,     0,     0,   339,   292,   293,   294,   295,     0,
        0,   297,   299,     0,   300,     0,     0,   290,     0,     0,
-       0,   291,     0,   352,     0,     0,     0,     0,     0,   310,
+       0,   291,     0,     0,     0,     0,   355,     0,     0,   310,
        0,   311,   136,   137,     0,   138,     0,     0,   139,     0,
-       0,     0,   325,     0,     0,     0,   329,   130,     0,   331,
-     333,     0,   130,     0,   143,   144,   145,   146,   336,     0,
-       0,     0,   147,   148,     0,     0,     0,   344,     0,   346,
-       0,   348,     0,     0,     0,    -6,     1,     0,     0,   353,
-     353,     0,     0,     0,     0,   355,   356,     2,     3,     4,
-       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
-      13,     0,     0,    14,    15,     0,    16,     0,    17,     0,
-       0,     0,    18,     0,    19,    20,    21,     0,     0,    22,
-       0,     0,     0,     0,    23,    24,    25,     0,     0,     0,
-      26,     0,     0,     0,    27,    28,    29,    30,     0,    31,
-       0,     0,     0,     0,     0,     0,     0,     0,    32,     0,
-       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,    38,    39,    40,    41,     0,     0,    42,    43,
-       0,     0,     0,    -6,    44,     0,     0,     0,    45,     2,
-       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
-      11,    12,    13,     0,     0,    14,    15,     0,    16,     0,
-      17,     0,     0,     0,    18,     0,    19,    20,    21,     0,
-       0,    22,     0,     0,     0,     0,    23,    24,    25,     0,
-       0,     0,    26,     0,     0,     0,    27,    28,    29,    30,
-       0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
-      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,    38,    39,    40,    41,     0,     0,
-      42,    43,     0,     0,     0,     0,    44,     0,     0,     0,
-      45,     2,     3,     4,     5,     0,     6,     7,     8,     9,
-      10,     0,    11,    12,    13,     0,     0,    66,    15,     0,
-      16,   322,    17,     0,     0,     0,    18,     0,    19,    20,
-      21,     0,     0,     0,     0,     0,     0,     0,    23,    24,
-      25,     0,     0,     0,    26,     0,     0,     0,     0,     0,
-      29,    30,     0,    31,     0,     0,     0,     0,     0,     0,
-       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,     0,     0,    38,    39,     0,    41,
-       0,     0,    42,    43,     0,     0,     0,    64,    44,     0,
-       0,     0,    45,     2,     3,     4,     5,     0,     6,     7,
-       8,     9,    10,     0,    11,    12,    13,     0,     0,    66,
-      15,     0,    16,     0,    17,     0,     0,     0,    18,     0,
-      19,    20,    21,     0,     0,     0,     0,     0,     0,     0,
-      23,    24,    25,     0,     0,     0,    26,     0,     0,     0,
-       0,     0,    29,    30,     0,    31,     0,     0,     0,     0,
-       0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
-       0,    41,     0,     0,    42,    43,     0,     0,     0,    64,
-      44,     0,     0,     0,    45,     2,     3,     4,     5,     0,
-       6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
-       0,    66,    15,     0,    16,     0,    17,     0,     0,     0,
-      18,     0,    19,    20,    21,     0,     0,     0,     0,     0,
-       0,     0,    23,    24,    25,     0,     0,     0,    26,     0,
-       0,     0,     0,     0,    29,    30,     0,    31,     0,     0,
-       0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
-       0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-      38,    39,     0,    41,     0,     0,    42,    43,     0,     0,
-       0,     0,    44,     0,     0,     0,    45,     2,     3,     4,
-       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
-      13,     0,     0,    66,    15,   204,    16,     0,    17,     0,
-       0,     0,    18,     0,    19,    20,   133,   134,     0,     0,
-       0,   135,   136,   137,    23,   138,    25,     0,   139,   140,
-     141,     0,     0,     0,     0,     0,    29,    30,     0,    31,
-       0,     0,     0,   142,   143,   144,   145,   146,    32,    64,
-       0,     0,   147,   148,     0,    33,    34,    35,    36,    37,
-       0,     0,     0,    39,     0,    41,     0,     0,    42,    43,
-       2,     3,     4,     5,    44,     0,     0,     0,    45,     0,
-       0,    11,    12,    13,     0,     0,    66,    15,     0,    16,
-       0,     0,     0,     0,     0,     0,    84,     0,     0,     0,
-       0,    85,     0,    86,    87,    88,    89,    67,     0,    25,
-       0,     2,     3,     4,     5,     0,     0,     0,     0,     0,
-       0,     0,    11,    12,    13,     0,     0,    66,    15,     0,
-      16,    32,     0,     0,     0,     0,     0,    84,    33,    34,
-      35,    36,    37,     0,    86,     0,    88,     0,    67,     0,
-      25,    42,    43,     0,     0,     0,     0,    44,     0,     0,
-       0,    45,   104,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,     2,     3,     4,     5,   136,   137,
-       0,   138,    42,    43,   139,    11,    12,    13,    44,     0,
-      66,    15,    45,    16,     0,     0,     0,     0,     0,     0,
-       0,     0,   145,   146,     0,     0,     0,     0,   147,   148,
-       0,    67,     0,    25,     2,     3,     4,     5,     0,     0,
+       0,     0,   326,     0,     0,     0,   330,   130,     0,     0,
+     333,   335,     0,   130,   143,   144,   145,   146,     0,   338,
+       0,     0,   147,   148,   343,     0,     0,     0,     0,   347,
+       0,   349,     0,   351,     0,     0,     0,     0,    -6,     1,
+       0,     0,   356,   356,     0,     0,     0,     0,   358,   359,
+       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
+       0,    11,    12,    13,     0,     0,    14,    15,     0,    16,
+       0,    17,     0,     0,     0,    18,     0,    19,    20,    21,
+       0,     0,    22,     0,     0,     0,     0,    23,    24,    25,
+       0,     0,     0,    26,     0,     0,     0,    27,    28,    29,
+      30,     0,    31,     0,     0,     0,     0,     0,     0,     0,
+       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,     0,     0,    38,    39,    40,    41,     0,
+       0,    42,    43,     0,     0,     0,    -6,    44,     0,     0,
+       0,    45,     2,     3,     4,     5,     0,     6,     7,     8,
+       9,    10,     0,    11,    12,    13,     0,     0,    14,    15,
+       0,    16,     0,    17,     0,     0,     0,    18,     0,    19,
+      20,    21,     0,     0,    22,     0,     0,     0,     0,    23,
+      24,    25,     0,     0,     0,    26,     0,     0,     0,    27,
+      28,    29,    30,     0,    31,     0,     0,     0,     0,     0,
+       0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
+      33,    34,    35,    36,    37,     0,     0,    38,    39,    40,
+      41,     0,     0,    42,    43,     0,     0,     0,     0,    44,
+       0,     0,     0,    45,     2,     3,     4,     5,     0,     6,
+       7,     8,     9,    10,     0,    11,    12,    13,     0,     0,
+      66,    15,     0,    16,   323,    17,     0,     0,     0,    18,
+       0,    19,    20,    21,     0,     0,     0,     0,     0,     0,
+       0,    23,    24,    25,     0,     0,     0,    26,     0,     0,
+       0,     0,     0,    29,    30,     0,    31,     0,     0,     0,
+       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,    34,    35,    36,    37,     0,     0,    38,
+      39,     0,    41,     0,     0,    42,    43,     0,     0,     0,
+      64,    44,     0,     0,     0,    45,     2,     3,     4,     5,
+       0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
+       0,     0,    66,    15,     0,    16,     0,    17,     0,     0,
+       0,    18,     0,    19,    20,    21,     0,     0,     0,     0,
+       0,     0,     0,    23,    24,    25,     0,     0,     0,    26,
+       0,     0,     0,     0,     0,    29,    30,     0,    31,     0,
+       0,     0,     0,     0,     0,     0,     0,    32,     0,     0,
+       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
+       0,    38,    39,     0,    41,     0,     0,    42,    43,     0,
+       0,     0,    64,    44,     0,     0,     0,    45,     2,     3,
+       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
+      12,    13,     0,     0,    66,    15,     0,    16,     0,    17,
+       0,     0,     0,    18,     0,    19,    20,    21,     0,     0,
+       0,     0,     0,     0,     0,    23,    24,    25,     0,     0,
+       0,    26,     0,     0,     0,     0,     0,    29,    30,     0,
+      31,     0,     0,     0,     0,     0,     0,     0,     0,    32,
+       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,     0,     0,    38,    39,     0,    41,     0,     0,    42,
+      43,     0,     0,     0,     0,    44,     0,     0,     0,    45,
+       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
+       0,    11,    12,    13,     0,     0,    66,    15,   204,    16,
+       0,    17,     0,     0,     0,    18,     0,    19,    20,   133,
+     134,     0,     0,     0,   135,   136,   137,    23,   138,    25,
+       0,   139,   140,   141,     0,     0,     0,     0,     0,    29,
+      30,     0,    31,     0,     0,     0,   142,   143,   144,   145,
+     146,    32,    64,     0,     0,   147,   148,     0,    33,    34,
+      35,    36,    37,     0,     0,     0,    39,     0,    41,     0,
+       0,    42,    43,     2,     3,     4,     5,    44,     0,     0,
+       0,    45,     0,     0,    11,    12,    13,     0,     0,    66,
+      15,     0,    16,     0,     0,     0,     0,     0,     0,    84,
+       0,     0,     0,     0,    85,     0,    86,    87,    88,    89,
+      67,     0,    25,     0,     2,     3,     4,     5,     0,     0,
        0,     0,     0,     0,     0,    11,    12,    13,     0,     0,
-      66,    15,     0,    16,     0,    32,     0,     0,     0,     0,
-       0,     0,    33,    34,    35,    36,    37,     0,     0,     0,
-       0,    67,     0,    25,     0,    42,    43,     0,     0,     0,
-       0,    44,     0,     0,     0,    45,     0,     0,     0,     0,
+      66,    15,     0,    16,    32,     0,     0,     0,     0,     0,
+      84,    33,    34,    35,    36,    37,     0,    86,     0,    88,
+       0,    67,     0,    25,    42,    43,     0,     0,     0,     0,
+      44,     0,     0,     0,    45,   104,     0,     0,     0,     0,
        0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
        0,     0,    33,    34,    35,    36,    37,     2,     3,     4,
-       5,     0,     0,     0,     0,    42,    43,     0,    11,    12,
-      13,    71,     0,    66,    15,    45,    16,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    67,     0,    25,     2,     3,     4,
+       5,   136,   137,     0,   138,    42,    43,   139,    11,    12,
+      13,    44,     0,    66,    15,    45,    16,     0,     0,     0,
+       0,     0,   142,   143,   144,   145,   146,     0,     0,     0,
+       0,   147,   148,     0,    67,     0,    25,     2,     3,     4,
        5,     0,     0,     0,     0,     0,     0,     0,    11,    12,
       13,     0,     0,    66,    15,     0,    16,     0,    32,     0,
        0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
        0,     0,     0,     0,    67,     0,    25,     0,    42,    43,
-       0,     0,     0,     0,    76,     0,     0,     0,    45,     0,
+       0,     0,     0,     0,    44,     0,     0,     0,    45,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    32,     0,
        0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       2,     3,     4,     5,   274,     0,     0,     0,    42,    43,
-       0,    11,    12,    13,    78,     0,    66,    15,    45,    16,
-       0,     0,   133,   134,     0,     0,     0,   135,   136,   137,
-       0,   138,     0,     0,   139,   140,   141,    67,     0,    25,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   142,
-     143,   144,   145,   146,     0,     0,     0,     0,   147,   148,
-     166,    32,     0,     0,     0,     0,     0,     0,    33,    34,
-      35,    36,    37,     0,     0,     0,     0,     0,     0,     0,
-       0,    42,    43,   133,   134,     0,     0,   128,   135,   136,
-     137,    45,   138,   167,   168,   139,   140,   141,   180,     0,
-       0,     0,     0,     0,     0,   181,     0,     0,     0,     0,
-     142,   143,   144,   145,   146,     0,   133,   134,     0,   147,
-     148,   135,   136,   137,     0,   138,     0,     0,   139,   140,
-     141,   182,     0,     0,     0,     0,     0,     0,   183,     0,
+       2,     3,     4,     5,   136,   137,     0,   138,    42,    43,
+     139,    11,    12,    13,    71,     0,    66,    15,    45,    16,
+       0,     0,     0,     0,     0,     0,     0,     0,   145,   146,
+       0,     0,     0,     0,   147,   148,     0,    67,     0,    25,
+       2,     3,     4,     5,     0,     0,     0,     0,     0,     0,
+       0,    11,    12,    13,     0,     0,    66,    15,     0,    16,
+       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,     0,     0,     0,     0,    67,     0,    25,
+       0,    42,    43,     0,     0,     0,     0,    76,     0,     0,
+       0,    45,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,     2,     3,     4,     5,   274,     0,     0,
+       0,    42,    43,     0,    11,    12,    13,    78,     0,    66,
+      15,    45,    16,     0,     0,   133,   134,     0,     0,     0,
+     135,   136,   137,     0,   138,     0,     0,   139,   140,   141,
+      67,     0,    25,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   142,   143,   144,   145,   146,     0,     0,     0,
+       0,   147,   148,   166,    32,     0,     0,     0,     0,     0,
+       0,    33,    34,    35,    36,    37,     0,     0,     0,     0,
+       0,     0,     0,     0,    42,    43,   133,   134,     0,     0,
+     128,   135,   136,   137,    45,   138,   167,   168,   139,   140,
+     141,   180,     0,     0,     0,     0,     0,     0,   181,     0,
        0,     0,     0,   142,   143,   144,   145,   146,     0,   133,
      134,     0,   147,   148,   135,   136,   137,     0,   138,     0,
-       0,   139,   140,   141,   184,     0,     0,     0,     0,     0,
-       0,   185,     0,     0,     0,     0,   142,   143,   144,   145,
+       0,   139,   140,   141,   182,     0,     0,     0,     0,     0,
+       0,   183,     0,     0,     0,     0,   142,   143,   144,   145,
      146,     0,   133,   134,     0,   147,   148,   135,   136,   137,
-       0,   138,     0,     0,   139,   140,   141,   186,     0,     0,
-       0,     0,     0,     0,   187,     0,     0,     0,     0,   142,
+       0,   138,     0,     0,   139,   140,   141,   184,     0,     0,
+       0,     0,     0,     0,   185,     0,     0,     0,     0,   142,
      143,   144,   145,   146,     0,   133,   134,     0,   147,   148,
      135,   136,   137,     0,   138,     0,     0,   139,   140,   141,
-     275,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     186,     0,     0,     0,     0,     0,     0,   187,     0,     0,
        0,     0,   142,   143,   144,   145,   146,     0,   133,   134,
        0,   147,   148,   135,   136,   137,     0,   138,     0,     0,
-     139,   140,   141,   276,     0,     0,     0,     0,     0,     0,
+     139,   140,   141,   275,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   142,   143,   144,   145,   146,
        0,   133,   134,     0,   147,   148,   135,   136,   137,     0,
-     138,     0,     0,   139,   140,   141,   277,     0,     0,     0,
+     138,     0,     0,   139,   140,   141,   276,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,   142,   143,
      144,   145,   146,     0,   133,   134,     0,   147,   148,   135,
-     136,   137,     0,   138,     0,     0,   139,   140,   141,     0,
-       0,     0,     0,     0,     0,     0,   238,     0,     0,     0,
+     136,   137,     0,   138,     0,     0,   139,   140,   141,   277,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,   142,   143,   144,   145,   146,     0,   133,   134,     0,
      147,   148,   135,   136,   137,     0,   138,     0,     0,   139,
-     140,   141,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   177,     0,   239,   142,   143,   144,   145,   146,     0,
+     140,   141,     0,     0,     0,     0,     0,     0,     0,   238,
+       0,     0,     0,     0,   142,   143,   144,   145,   146,     0,
      133,   134,     0,   147,   148,   135,   136,   137,     0,   138,
        0,     0,   139,   140,   141,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   142,   143,   144,
+       0,     0,     0,     0,     0,     0,   239,   142,   143,   144,
      145,   146,     0,   133,   134,     0,   147,   148,   135,   136,
      137,     0,   138,     0,     0,   139,   140,   141,     0,     0,
        0,     0,     0,   188,   189,     0,     0,     0,     0,     0,
@@ -1108,122 +1106,111 @@ static const yytype_int16 yytable[] =
 static const yytype_int16 yycheck[] =
 {
        0,    55,   126,     0,   128,     4,    32,    36,     7,     8,
-       9,   205,    45,    12,    13,    14,    54,    30,   100,     1,
-      34,    20,    54,   105,    23,    13,    14,    77,    98,    58,
-      29,    30,    58,    32,    33,    34,    35,    36,    37,   303,
-      54,    74,    28,    42,    43,    44,    45,    80,    13,    14,
-     230,   101,   102,    91,   318,    54,   165,    56,    45,    91,
-      47,   100,   242,    28,    46,   259,   105,   176,    67,   100,
-      50,   314,    71,    98,   105,    74,   319,    76,    91,    78,
-     105,    80,    28,    71,   100,    84,    28,    86,    76,   105,
-      28,   200,   105,   100,    28,   289,    56,    57,   105,    98,
-      28,    98,   104,   105,    52,    53,    27,    28,   302,   290,
-     291,    28,    28,   307,   308,    28,    99,   311,    99,    91,
-      99,   105,    45,    28,    28,   125,    52,   126,   127,   128,
-     105,   325,   105,    28,   133,   134,   135,   136,   137,   138,
+       9,   205,    45,    12,    13,    14,    54,    30,    98,     1,
+      34,    20,    54,   303,    23,    13,    14,    77,    50,    58,
+      29,    30,    58,    32,    33,    34,    35,    36,    37,   319,
+      54,    74,   230,    42,    43,    44,    45,    80,    13,    14,
+      28,   101,   102,    91,   242,    54,   165,    56,    28,    91,
+     314,    28,    98,    28,    46,   259,   320,   176,    67,   105,
+      28,    45,    71,    47,    99,    74,    28,    76,    91,    78,
+      28,    80,    28,    71,   100,    84,    28,    86,    76,   105,
+      28,   200,   105,   100,    99,   289,    99,    32,   105,    98,
+      91,    98,    56,    57,   100,   100,    41,   100,   302,   105,
+     105,   105,   105,   307,   308,    50,   105,   311,   104,   105,
+      55,    52,    53,    27,    28,   125,    45,   126,   127,   128,
+     290,   291,   326,    28,   133,   134,   135,   136,   137,   138,
      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     132,   150,   105,   105,    28,   154,   350,    28,    28,   100,
-     100,    28,   105,    54,   163,    28,    32,    32,   167,   168,
-      58,   170,   171,    52,   173,   174,   285,    36,   177,    32,
-      32,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,    52,   316,    32,    32,   194,   125,   321,   300,   197,
-     318,    30,    -1,   202,   313,   204,    -1,    -1,   262,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    71,    72,   257,    74,    -1,    -1,    77,   338,
-      -1,   340,   231,    -1,   343,    -1,    -1,    -1,    -1,   238,
+     132,   150,    87,    52,   105,   154,   105,    28,    28,   353,
+     105,    28,    28,    98,   163,    28,   100,   100,   167,   168,
+      28,   170,   171,   105,   173,   174,   285,    54,   177,    32,
+      28,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,    32,   316,   302,    36,   194,    58,    52,   322,   197,
+      32,    32,    52,   202,   313,   204,    32,    56,   262,    32,
+     125,   300,   319,    30,    -1,    -1,    65,    66,    -1,    -1,
+      -1,    70,    71,    72,   257,    74,    -1,    -1,    77,    78,
+      79,   340,   231,   342,    -1,    -1,    -1,   346,    -1,   238,
      239,   223,    -1,    92,    93,    94,    95,    96,    -1,    -1,
       -1,    -1,   101,   102,    -1,    -1,    -1,    -1,   257,    -1,
-      -1,    -1,    -1,    -1,    -1,   263,    -1,    -1,   266,    -1,
-      -1,    -1,    -1,   327,    -1,   274,   275,   276,   277,    -1,
+      -1,    -1,    -1,   317,    -1,   263,    -1,    -1,   266,    -1,
+      -1,    -1,    -1,    -1,   328,   274,   275,   276,   277,    -1,
       -1,   279,   281,    -1,   282,    -1,    -1,   269,    -1,    -1,
-      -1,   273,    -1,   347,    -1,    -1,    -1,    -1,    -1,   298,
+      -1,   273,    -1,    -1,    -1,    -1,   350,    -1,    -1,   298,
       -1,   299,    71,    72,    -1,    74,    -1,    -1,    77,    -1,
-      -1,    -1,   310,    -1,    -1,    -1,   314,   316,    -1,   317,
-     318,    -1,   321,    -1,    93,    94,    95,    96,   326,    -1,
-      -1,    -1,   101,   102,    -1,    -1,    -1,   335,    -1,   337,
-      -1,   339,    -1,    -1,    -1,     0,     1,    -1,    -1,   349,
-     350,    -1,    -1,    -1,    -1,   353,   354,    12,    13,    14,
-      15,    -1,    17,    18,    19,    20,    21,    -1,    23,    24,
-      25,    -1,    -1,    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,    -1,    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,    -1,    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,    -1,    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,
-      -1,    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,    -1,    28,    29,    54,    31,    -1,    33,    -1,
-      -1,    -1,    37,    -1,    39,    40,    65,    66,    -1,    -1,
-      -1,    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,    -1,   310,    -1,    -1,    -1,   314,   316,    -1,    -1,
+     318,   319,    -1,   322,    93,    94,    95,    96,    -1,   327,
+      -1,    -1,   101,   102,   332,    -1,    -1,    -1,    -1,   337,
+      -1,   339,    -1,   341,    -1,    -1,    -1,    -1,     0,     1,
+      -1,    -1,   352,   353,    -1,    -1,    -1,    -1,   356,   357,
+      12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
       -1,    23,    24,    25,    -1,    -1,    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,    -1,    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,    71,    72,
-      -1,    74,    93,    94,    77,    23,    24,    25,    99,    -1,
-      28,    29,   103,    31,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    95,    96,    -1,    -1,    -1,    -1,   101,   102,
-      -1,    49,    -1,    51,    12,    13,    14,    15,    -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,    98,    99,    -1,    -1,
+      -1,   103,    12,    13,    14,    15,    -1,    17,    18,    19,
+      20,    21,    -1,    23,    24,    25,    -1,    -1,    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,    -1,
+      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,    -1,    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,    -1,    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,    -1,    28,    29,    54,    31,
+      -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    65,
+      66,    -1,    -1,    -1,    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,    -1,    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,    -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,
+      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,
+      15,    71,    72,    -1,    74,    93,    94,    77,    23,    24,
       25,    99,    -1,    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,
+      -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    -1,
+      -1,   101,   102,    -1,    49,    -1,    51,    12,    13,    14,
       15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    24,
       25,    -1,    -1,    28,    29,    -1,    31,    -1,    73,    -1,
       -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
@@ -1231,19 +1218,27 @@ static const yytype_int16 yycheck[] =
       -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,    47,    -1,    -1,    -1,    93,    94,
-      -1,    23,    24,    25,    99,    -1,    28,    29,   103,    31,
-      -1,    -1,    65,    66,    -1,    -1,    -1,    70,    71,    72,
-      -1,    74,    -1,    -1,    77,    78,    79,    49,    -1,    51,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    -1,    -1,   101,   102,
-      42,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      82,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    93,    94,    65,    66,    -1,    -1,    99,    70,    71,
-      72,   103,    74,    75,    76,    77,    78,    79,    47,    -1,
-      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    -1,
-      92,    93,    94,    95,    96,    -1,    65,    66,    -1,   101,
-     102,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
+      12,    13,    14,    15,    71,    72,    -1,    74,    93,    94,
+      77,    23,    24,    25,    99,    -1,    28,    29,   103,    31,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,    96,
+      -1,    -1,    -1,    -1,   101,   102,    -1,    49,    -1,    51,
+      12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    23,    24,    25,    -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,    47,    -1,    -1,
+      -1,    93,    94,    -1,    23,    24,    25,    99,    -1,    28,
+      29,   103,    31,    -1,    -1,    65,    66,    -1,    -1,    -1,
+      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
+      49,    -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    -1,
+      -1,   101,   102,    42,    73,    -1,    -1,    -1,    -1,    -1,
+      -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    93,    94,    65,    66,    -1,    -1,
+      99,    70,    71,    72,   103,    74,    75,    76,    77,    78,
       79,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,
       -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    65,
       66,    -1,   101,   102,    70,    71,    72,    -1,    74,    -1,
@@ -1254,7 +1249,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    -1,    92,
       93,    94,    95,    96,    -1,    65,    66,    -1,   101,   102,
       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,    -1,    92,    93,    94,    95,    96,    -1,    65,    66,
       -1,   101,   102,    70,    71,    72,    -1,    74,    -1,    -1,
       77,    78,    79,    47,    -1,    -1,    -1,    -1,    -1,    -1,
@@ -1263,15 +1258,15 @@ static const yytype_int16 yycheck[] =
       74,    -1,    -1,    77,    78,    79,    47,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
       94,    95,    96,    -1,    65,    66,    -1,   101,   102,    70,
-      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    47,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    92,    93,    94,    95,    96,    -1,    65,    66,    -1,
      101,   102,    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,    96,    -1,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,
+      -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
       65,    66,    -1,   101,   102,    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,
+      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
       95,    96,    -1,    65,    66,    -1,   101,   102,    70,    71,
       72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,
       -1,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,
@@ -1327,11 +1322,11 @@ static const yytype_uint8 yystos[] =
       34,    54,   111,   108,   112,   125,   125,    28,   105,   145,
      108,   108,   129,   129,   129,   129,   100,   125,    54,   129,
      125,    32,    58,   124,    32,    28,   126,   145,   145,    32,
-     129,   125,    36,    58,   116,   117,   123,   126,   115,   116,
-     118,   123,    32,   126,   126,   125,   126,   124,   117,   125,
-     119,   125,   118,   125,   119,   126,   125,   111,    58,   114,
-      52,    32,    32,    52,   125,    32,   125,   124,   125,   124,
-     124,    32,   111,   112,   126,   125,   125
+     129,   125,    36,    58,   116,   117,   123,   124,   126,   115,
+     116,   118,   123,    32,   126,   126,   125,   126,   124,   117,
+     125,   119,   111,   125,   118,   125,   119,   126,   125,   111,
+      58,   114,    52,   125,    32,    32,    52,   125,    32,   125,
+     124,   125,   124,   124,    32,   111,   112,   126,   125,   125
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2375,6 +2370,20 @@ yyreduce:
 #line 295 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
+		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
+		WRITE_UINT32(&else1, (yyvsp[(7) - (9)].code) - (yyvsp[(1) - (9)].code));
+		WRITE_UINT32(&end, (yyvsp[(9) - (9)].code) - (yyvsp[(1) - (9)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 1] = then;	/* thenpart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 2] = else1;	/* elsepart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 3] = end;	/* end, if cond fails */
+
+		g_lingo->processIf(0, (yyvsp[(9) - (9)].code) - (yyvsp[(1) - (9)].code)); ;}
+    break;
+
+  case 34:
+#line 305 "engines/director/lingo/lingo-gr.y"
+    {
+		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
 		WRITE_UINT32(&else1, 0);
 		WRITE_UINT32(&end, (yyvsp[(6) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2385,8 +2394,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 34:
-#line 305 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 315 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2399,8 +2408,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 35:
-#line 315 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 325 "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,18 +2422,18 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(10) - (10)].code) - (yyvsp[(1) - (10)].code)); ;}
     break;
 
-  case 36:
-#line 327 "engines/director/lingo/lingo-gr.y"
+  case 37:
+#line 337 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = 0; ;}
     break;
 
-  case 37:
-#line 328 "engines/director/lingo/lingo-gr.y"
+  case 38:
+#line 338 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 42:
-#line 339 "engines/director/lingo/lingo-gr.y"
+  case 43:
+#line 349 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2433,8 +2442,8 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 44:
-#line 348 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 358 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2443,23 +2452,23 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 45:
-#line 356 "engines/director/lingo/lingo-gr.y"
+  case 46:
+#line 366 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); ;}
     break;
 
-  case 46:
-#line 357 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 367 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_eq, STOP); ;}
     break;
 
-  case 48:
-#line 361 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 371 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
-  case 49:
-#line 364 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 374 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2467,8 +2476,8 @@ yyreduce:
 		delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 50:
-#line 371 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 381 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2476,8 +2485,8 @@ yyreduce:
 		g_lingo->codeLabel(0); ;}
     break;
 
-  case 51:
-#line 378 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 388 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2486,23 +2495,23 @@ yyreduce:
 		g_lingo->code1(skipEnd); ;}
     break;
 
-  case 52:
-#line 386 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 396 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 53:
-#line 389 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 399 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 54:
-#line 392 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 402 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 57:
-#line 397 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 407 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
@@ -2510,80 +2519,80 @@ yyreduce:
 		delete (yyvsp[(2) - (3)].s); ;}
     break;
 
-  case 58:
-#line 403 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 413 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_tellcode);
 		g_lingo->code1(STOP); ;}
     break;
 
-  case 59:
-#line 407 "engines/director/lingo/lingo-gr.y"
+  case 60:
+#line 417 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->codeConst((yyvsp[(1) - (1)].i)); ;}
     break;
 
-  case 60:
-#line 408 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 418 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_fconstpush);
 		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
-  case 61:
-#line 411 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 421 "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 62:
-#line 414 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 424 "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 63:
-#line 417 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 427 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 64:
-#line 420 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 430 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 65:
-#line 423 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 433 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 66:
-#line 424 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 434 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
-  case 67:
-#line 425 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 435 "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 68:
-#line 428 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 438 "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 69:
-#line 432 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 442 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeConst(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentitypush);
@@ -2593,8 +2602,8 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 70:
-#line 439 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 449 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
@@ -2603,386 +2612,386 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 72:
-#line 446 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 456 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_add); ;}
     break;
 
-  case 73:
-#line 447 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 457 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_sub); ;}
     break;
 
-  case 74:
-#line 448 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 458 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
-  case 75:
-#line 449 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 459 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
-  case 76:
-#line 450 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 460 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
-  case 77:
-#line 451 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 461 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
-  case 78:
-#line 452 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 462 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
-  case 79:
-#line 453 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 463 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
-  case 80:
-#line 454 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 464 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
-  case 81:
-#line 455 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 465 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
-  case 82:
-#line 456 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 466 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
-  case 83:
-#line 457 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 467 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
-  case 84:
-#line 458 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 468 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
-  case 85:
-#line 459 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 469 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
-  case 86:
-#line 460 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 470 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
-  case 87:
-#line 461 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 471 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
-  case 88:
-#line 462 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 472 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
-  case 89:
-#line 463 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 473 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
-  case 90:
-#line 464 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 474 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
-  case 91:
-#line 465 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 475 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 92:
-#line 466 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 476 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
-  case 93:
-#line 467 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 477 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
-  case 94:
-#line 468 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 478 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
-  case 95:
-#line 469 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 479 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
-  case 96:
-#line 470 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 480 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
-  case 97:
-#line 471 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 481 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
-  case 98:
-#line 472 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 482 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
-  case 99:
-#line 473 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 483 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
-  case 100:
-#line 474 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 484 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
-  case 101:
-#line 475 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 485 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
-  case 102:
-#line 476 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 486 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
-  case 103:
-#line 479 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 489 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 104:
-#line 484 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 494 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
-  case 107:
-#line 487 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 497 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
-  case 108:
-#line 488 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 498 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
-  case 112:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 502 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 113:
-#line 495 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 505 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 114:
-#line 498 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 508 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 115:
-#line 501 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 511 "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 116:
-#line 505 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 515 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 117:
-#line 506 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 516 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
-  case 118:
-#line 507 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 517 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
-  case 119:
-#line 508 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 518 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
-  case 120:
-#line 509 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 519 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
-  case 121:
-#line 510 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 520 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
-  case 122:
-#line 511 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 521 "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 123:
-#line 514 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 524 "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 124:
-#line 515 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 525 "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 125:
-#line 518 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 528 "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 126:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 529 "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 127:
-#line 522 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 532 "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 128:
-#line 523 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 533 "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 129:
-#line 534 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 544 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
-  case 130:
-#line 535 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 545 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
-  case 131:
-#line 536 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 546 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
-  case 132:
-#line 537 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 547 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 133:
-#line 540 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 550 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 134:
-#line 543 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 553 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 139:
-#line 556 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 566 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
-  case 140:
-#line 557 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 567 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 141:
-#line 560 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 570 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 142:
-#line 563 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 573 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 143:
-#line 566 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 576 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
-  case 144:
-#line 566 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 576 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 145:
-#line 596 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 606 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 146:
-#line 597 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 607 "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 147:
-#line 601 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 611 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));
 		;}
     break;
 
-  case 148:
-#line 604 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 614 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
-  case 149:
-#line 605 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 615 "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 150:
-#line 609 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 619 "engines/director/lingo/lingo-gr.y"
     {	// D3
 				g_lingo->code1(g_lingo->c_procret);
 				g_lingo->define(*(yyvsp[(1) - (7)].s), (yyvsp[(2) - (7)].code), (yyvsp[(3) - (7)].narg));
@@ -2993,8 +3002,8 @@ yyreduce:
 			;}
     break;
 
-  case 151:
-#line 617 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 627 "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));
@@ -3003,38 +3012,38 @@ yyreduce:
 			;}
     break;
 
-  case 152:
-#line 624 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 634 "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 153:
-#line 626 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 636 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 154:
-#line 627 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 637 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
-  case 155:
-#line 628 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 638 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 156:
-#line 629 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 639 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 157:
-#line 632 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 642 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
-  case 158:
-#line 636 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 646 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -3043,34 +3052,34 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 159:
-#line 644 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 654 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 160:
-#line 645 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 655 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 161:
-#line 646 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 656 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 162:
-#line 649 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 659 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 163:
-#line 650 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 660 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3074 "engines/director/lingo/lingo-gr.cpp"
+#line 3083 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3284,6 +3293,6 @@ yyreturn:
 }
 
 
-#line 653 "engines/director/lingo/lingo-gr.y"
+#line 663 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 407b1ea..08af780 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -292,6 +292,16 @@ ifstmt:	if cond tTHENNL stmtlist end ENDCLAUSE		{
 		checkEnd($9, "if", true);
 
 		g_lingo->processIf(0, $8 - $1); }
+	| if cond tTHENNL stmtlist end tNLELSE begin stmtoneliner end {
+		inst then = 0, else1 = 0, end = 0;
+		WRITE_UINT32(&then, $4 - $1);
+		WRITE_UINT32(&else1, $7 - $1);
+		WRITE_UINT32(&end, $9 - $1);
+		(*g_lingo->_currentScript)[$1 + 1] = then;	/* thenpart */
+		(*g_lingo->_currentScript)[$1 + 2] = else1;	/* elsepart */
+		(*g_lingo->_currentScript)[$1 + 3] = end;	/* end, if cond fails */
+
+		g_lingo->processIf(0, $9 - $1); }
 	| if cond tTHEN begin stmtoneliner end {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, $4 - $1);





More information about the Scummvm-git-logs mailing list