bpo-39702: Relax grammar restrictions on decorators (PEP 614) (GH-18570)

diff --git a/Grammar/Grammar b/Grammar/Grammar
index 21f7e1a..170518a 100644
--- a/Grammar/Grammar
+++ b/Grammar/Grammar
@@ -14,7 +14,7 @@
 file_input: (NEWLINE | stmt)* ENDMARKER
 eval_input: testlist NEWLINE* ENDMARKER
 
-decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
+decorator: '@' namedexpr_test NEWLINE
 decorators: decorator+
 decorated: decorators (classdef | funcdef | async_funcdef)
 
diff --git a/Include/node.h b/Include/node.h
index 2b39074..ca24f28 100644
--- a/Include/node.h
+++ b/Include/node.h
@@ -31,7 +31,6 @@
 #define NCH(n)          ((n)->n_nchildren)
 
 #define CHILD(n, i)     (&(n)->n_child[i])
-#define RCHILD(n, i)    (CHILD(n, NCH(n) + i))
 #define TYPE(n)         ((n)->n_type)
 #define STR(n)          ((n)->n_str)
 #define LINENO(n)       ((n)->n_lineno)
diff --git a/Lib/test/test_decorators.py b/Lib/test/test_decorators.py
index 8953f64..298979e 100644
--- a/Lib/test/test_decorators.py
+++ b/Lib/test/test_decorators.py
@@ -151,21 +151,18 @@
         self.assertEqual(counts['double'], 4)
 
     def test_errors(self):
-        # Test syntax restrictions - these are all compile-time errors:
-        #
-        for expr in [ "1+2", "x[3]", "(1, 2)" ]:
-            # Sanity check: is expr is a valid expression by itself?
-            compile(expr, "testexpr", "exec")
 
-            codestr = "@%s\ndef f(): pass" % expr
-            self.assertRaises(SyntaxError, compile, codestr, "test", "exec")
+        # Test SyntaxErrors:
+        for stmt in ("x,", "x, y", "x = y", "pass", "import sys"):
+            compile(stmt, "test", "exec")  # Sanity check.
+            with self.assertRaises(SyntaxError):
+                compile(f"@{stmt}\ndef f(): pass", "test", "exec")
 
-        # You can't put multiple decorators on a single line:
-        #
-        self.assertRaises(SyntaxError, compile,
-                          "@f1 @f2\ndef f(): pass", "test", "exec")
-
-        # Test runtime errors
+        # Test TypeErrors that used to be SyntaxErrors:
+        for expr in ("1.+2j", "[1, 2][-1]", "(1, 2)", "True", "...", "None"):
+            compile(expr, "test", "eval")  # Sanity check.
+            with self.assertRaises(TypeError):
+                exec(f"@{expr}\ndef f(): pass")
 
         def unimp(func):
             raise NotImplementedError
@@ -179,6 +176,13 @@
             code = compile(codestr, "test", "exec")
             self.assertRaises(exc, eval, code, context)
 
+    def test_expressions(self):
+        for expr in (
+            "(x,)", "(x, y)", "x := y", "(x := y)", "x @y", "(x @ y)", "x[0]",
+            "w[x].y.z", "w + x - (y + z)", "x(y)()(z)", "[w, x, y][z]", "x.y",
+        ):
+            compile(f"@{expr}\ndef f(): pass", "test", "exec")
+
     def test_double(self):
         class C(object):
             @funcattrs(abc=1, xyz="haha")
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py
index 2ed73e3..922a516 100644
--- a/Lib/test/test_grammar.py
+++ b/Lib/test/test_grammar.py
@@ -460,7 +460,7 @@
 
     def test_funcdef(self):
         ### [decorators] 'def' NAME parameters ['->' test] ':' suite
-        ### decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
+        ### decorator: '@' namedexpr_test NEWLINE
         ### decorators: decorator+
         ### parameters: '(' [typedargslist] ')'
         ### typedargslist: ((tfpdef ['=' test] ',')*
@@ -666,6 +666,20 @@
         def f(x) -> list: pass
         self.assertEqual(f.__annotations__, {'return': list})
 
+        # Test expressions as decorators (PEP 614):
+        @False or null
+        def f(x): pass
+        @d := null
+        def f(x): pass
+        @lambda f: null(f)
+        def f(x): pass
+        @[..., null, ...][1]
+        def f(x): pass
+        @null(null)(null)
+        def f(x): pass
+        @[null][0].__call__.__call__
+        def f(x): pass
+
         # test closures with a variety of opargs
         closure = 1
         def f(): return closure
@@ -1515,13 +1529,27 @@
             def meth2(self, arg): pass
             def meth3(self, a1, a2): pass
 
-        # decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
+        # decorator: '@' namedexpr_test NEWLINE
         # decorators: decorator+
         # decorated: decorators (classdef | funcdef)
         def class_decorator(x): return x
         @class_decorator
         class G: pass
 
+        # Test expressions as decorators (PEP 614):
+        @False or class_decorator
+        class H: pass
+        @d := class_decorator
+        class I: pass
+        @lambda c: class_decorator(c)
+        class J: pass
+        @[..., class_decorator, ...][1]
+        class K: pass
+        @class_decorator(class_decorator)(class_decorator)
+        class L: pass
+        @[class_decorator][0].__call__.__call__
+        class M: pass
+
     def test_dictcomps(self):
         # dictorsetmaker: ( (test ':' test (comp_for |
         #                                   (',' test ':' test)* [','])) |
diff --git a/Lib/test/test_parser.py b/Lib/test/test_parser.py
index 7295f66..73178f3 100644
--- a/Lib/test/test_parser.py
+++ b/Lib/test/test_parser.py
@@ -226,6 +226,27 @@
         self.check_suite("@funcattrs()\n"
                          "def f(): pass")
 
+        self.check_suite("@False or x\n"
+                         "def f(): pass")
+        self.check_suite("@d := x\n"
+                         "def f(): pass")
+        self.check_suite("@lambda f: x(f)\n"
+                         "def f(): pass")
+        self.check_suite("@[..., x, ...][1]\n"
+                         "def f(): pass")
+        self.check_suite("@x(x)(x)\n"
+                         "def f(): pass")
+        self.check_suite("@(x, x)\n"
+                         "def f(): pass")
+        self.check_suite("@...\n"
+                         "def f(): pass")
+        self.check_suite("@None\n"
+                         "def f(): pass")
+        self.check_suite("@w @(x @y) @(z)\n"
+                         "def f(): pass")
+        self.check_suite("@w[x].y.z\n"
+                         "def f(): pass")
+
         # keyword-only arguments
         self.check_suite("def f(*, a): pass")
         self.check_suite("def f(*, a = 5): pass")
@@ -270,6 +291,27 @@
                          "@decorator2\n"
                          "class foo():pass")
 
+        self.check_suite("@False or x\n"
+                         "class C: pass")
+        self.check_suite("@d := x\n"
+                         "class C: pass")
+        self.check_suite("@lambda f: x(f)\n"
+                         "class C: pass")
+        self.check_suite("@[..., x, ...][1]\n"
+                         "class C: pass")
+        self.check_suite("@x(x)(x)\n"
+                         "class C: pass")
+        self.check_suite("@(x, x)\n"
+                         "class C: pass")
+        self.check_suite("@...\n"
+                         "class C: pass")
+        self.check_suite("@None\n"
+                         "class C: pass")
+        self.check_suite("@w @(x @y) @(z)\n"
+                         "class C: pass")
+        self.check_suite("@w[x].y.z\n"
+                         "class C: pass")
+
     def test_import_from_statement(self):
         self.check_suite("from sys.path import *")
         self.check_suite("from sys.path import dirname")
diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-02-20-08-12-52.bpo-39702.4_AmyF.rst b/Misc/NEWS.d/next/Core and Builtins/2020-02-20-08-12-52.bpo-39702.4_AmyF.rst
new file mode 100644
index 0000000..58bafa1
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2020-02-20-08-12-52.bpo-39702.4_AmyF.rst
@@ -0,0 +1,2 @@
+Relax :term:`decorator` grammar restrictions to allow any valid expression
+(:pep:`614`).
diff --git a/Python/ast.c b/Python/ast.c
index ad25565..0aed54c 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -1692,79 +1692,15 @@
 }
 
 static expr_ty
-ast_for_dotted_name(struct compiling *c, const node *n)
-{
-    expr_ty e;
-    identifier id;
-    int lineno, col_offset;
-    int i;
-    node *ch;
-
-    REQ(n, dotted_name);
-
-    lineno = LINENO(n);
-    col_offset = n->n_col_offset;
-
-    ch = CHILD(n, 0);
-    id = NEW_IDENTIFIER(ch);
-    if (!id)
-        return NULL;
-    e = Name(id, Load, lineno, col_offset,
-             ch->n_end_lineno, ch->n_end_col_offset, c->c_arena);
-    if (!e)
-        return NULL;
-
-    for (i = 2; i < NCH(n); i+=2) {
-        const node *child = CHILD(n, i);
-        id = NEW_IDENTIFIER(child);
-        if (!id)
-            return NULL;
-        e = Attribute(e, id, Load, lineno, col_offset,
-                      child->n_end_lineno, child->n_end_col_offset, c->c_arena);
-        if (!e)
-            return NULL;
-    }
-
-    return e;
-}
-
-static expr_ty
 ast_for_decorator(struct compiling *c, const node *n)
 {
-    /* decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE */
-    expr_ty d = NULL;
-    expr_ty name_expr;
+    /* decorator: '@' namedexpr_test NEWLINE */
 
     REQ(n, decorator);
     REQ(CHILD(n, 0), AT);
-    REQ(RCHILD(n, -1), NEWLINE);
-
-    name_expr = ast_for_dotted_name(c, CHILD(n, 1));
-    if (!name_expr)
-        return NULL;
-
-    if (NCH(n) == 3) { /* No arguments */
-        d = name_expr;
-        name_expr = NULL;
-    }
-    else if (NCH(n) == 5) { /* Call with no arguments */
-        d = Call(name_expr, NULL, NULL,
-                 name_expr->lineno, name_expr->col_offset,
-                 CHILD(n, 3)->n_end_lineno, CHILD(n, 3)->n_end_col_offset,
-                 c->c_arena);
-        if (!d)
-            return NULL;
-        name_expr = NULL;
-    }
-    else {
-        d = ast_for_call(c, CHILD(n, 3), name_expr,
-                         CHILD(n, 1), CHILD(n, 2), CHILD(n, 4));
-        if (!d)
-            return NULL;
-        name_expr = NULL;
-    }
-
-    return d;
+    REQ(CHILD(n, 2), NEWLINE);
+    
+    return ast_for_expr(c, CHILD(n, 1));
 }
 
 static asdl_seq*
diff --git a/Python/graminit.c b/Python/graminit.c
index 62d9ae2..b7aa528 100644
--- a/Python/graminit.c
+++ b/Python/graminit.c
@@ -52,31 +52,17 @@
 static const arc arcs_3_1[1] = {
     {49, 2},
 };
-static const arc arcs_3_2[2] = {
-    {5, 3},
-    {2, 4},
+static const arc arcs_3_2[1] = {
+    {2, 3},
 };
-static const arc arcs_3_3[2] = {
-    {50, 5},
-    {51, 6},
+static const arc arcs_3_3[1] = {
+    {0, 3},
 };
-static const arc arcs_3_4[1] = {
-    {0, 4},
-};
-static const arc arcs_3_5[1] = {
-    {2, 4},
-};
-static const arc arcs_3_6[1] = {
-    {50, 5},
-};
-static state states_3[7] = {
+static state states_3[4] = {
     {1, arcs_3_0},
     {1, arcs_3_1},
-    {2, arcs_3_2},
-    {2, arcs_3_3},
-    {1, arcs_3_4},
-    {1, arcs_3_5},
-    {1, arcs_3_6},
+    {1, arcs_3_2},
+    {1, arcs_3_3},
 };
 static const arc arcs_4_0[1] = {
     {48, 1},
@@ -90,12 +76,12 @@
     {2, arcs_4_1},
 };
 static const arc arcs_5_0[1] = {
-    {52, 1},
+    {50, 1},
 };
 static const arc arcs_5_1[3] = {
+    {52, 2},
+    {53, 2},
     {54, 2},
-    {55, 2},
-    {56, 2},
 };
 static const arc arcs_5_2[1] = {
     {0, 2},
@@ -109,7 +95,7 @@
     {38, 1},
 };
 static const arc arcs_6_1[1] = {
-    {56, 2},
+    {54, 2},
 };
 static const arc arcs_6_2[1] = {
     {0, 2},
@@ -126,24 +112,24 @@
     {40, 2},
 };
 static const arc arcs_7_2[1] = {
-    {57, 3},
+    {55, 3},
 };
 static const arc arcs_7_3[2] = {
-    {58, 4},
-    {59, 5},
+    {56, 4},
+    {57, 5},
 };
 static const arc arcs_7_4[1] = {
-    {60, 6},
+    {58, 6},
 };
 static const arc arcs_7_5[2] = {
-    {61, 7},
-    {62, 8},
+    {59, 7},
+    {60, 8},
 };
 static const arc arcs_7_6[1] = {
-    {59, 5},
+    {57, 5},
 };
 static const arc arcs_7_7[1] = {
-    {62, 8},
+    {60, 8},
 };
 static const arc arcs_7_8[1] = {
     {0, 8},
@@ -163,14 +149,14 @@
     {5, 1},
 };
 static const arc arcs_8_1[2] = {
-    {50, 2},
-    {63, 3},
+    {61, 2},
+    {62, 3},
 };
 static const arc arcs_8_2[1] = {
     {0, 2},
 };
 static const arc arcs_8_3[1] = {
-    {50, 2},
+    {61, 2},
 };
 static state states_8[4] = {
     {1, arcs_8_0},
@@ -180,217 +166,217 @@
 };
 static const arc arcs_9_0[3] = {
     {6, 1},
-    {64, 2},
-    {65, 3},
+    {63, 2},
+    {64, 3},
 };
 static const arc arcs_9_1[4] = {
-    {66, 4},
-    {61, 5},
-    {65, 6},
+    {65, 4},
+    {59, 5},
+    {64, 6},
     {0, 1},
 };
 static const arc arcs_9_2[1] = {
-    {65, 7},
+    {64, 7},
 };
 static const arc arcs_9_3[4] = {
-    {66, 8},
-    {67, 9},
-    {61, 5},
+    {65, 8},
+    {66, 9},
+    {59, 5},
     {0, 3},
 };
 static const arc arcs_9_4[4] = {
-    {64, 2},
-    {61, 10},
-    {65, 11},
+    {63, 2},
+    {59, 10},
+    {64, 11},
     {0, 4},
 };
 static const arc arcs_9_5[1] = {
     {0, 5},
 };
 static const arc arcs_9_6[3] = {
-    {66, 4},
-    {61, 5},
+    {65, 4},
+    {59, 5},
     {0, 6},
 };
 static const arc arcs_9_7[3] = {
-    {66, 12},
-    {61, 5},
+    {65, 12},
+    {59, 5},
     {0, 7},
 };
 static const arc arcs_9_8[6] = {
     {6, 13},
-    {64, 2},
-    {68, 14},
-    {61, 15},
-    {65, 3},
+    {63, 2},
+    {67, 14},
+    {59, 15},
+    {64, 3},
     {0, 8},
 };
 static const arc arcs_9_9[1] = {
-    {60, 16},
+    {58, 16},
 };
 static const arc arcs_9_10[3] = {
-    {64, 2},
-    {65, 11},
+    {63, 2},
+    {64, 11},
     {0, 10},
 };
 static const arc arcs_9_11[4] = {
-    {66, 4},
-    {67, 17},
-    {61, 5},
+    {65, 4},
+    {66, 17},
+    {59, 5},
     {0, 11},
 };
 static const arc arcs_9_12[2] = {
-    {61, 5},
+    {59, 5},
     {0, 12},
 };
 static const arc arcs_9_13[4] = {
-    {66, 18},
-    {61, 5},
-    {65, 19},
+    {65, 18},
+    {59, 5},
+    {64, 19},
     {0, 13},
 };
 static const arc arcs_9_14[2] = {
-    {66, 20},
+    {65, 20},
     {0, 14},
 };
 static const arc arcs_9_15[5] = {
     {6, 13},
-    {64, 2},
-    {68, 14},
-    {65, 3},
+    {63, 2},
+    {67, 14},
+    {64, 3},
     {0, 15},
 };
 static const arc arcs_9_16[3] = {
-    {66, 8},
-    {61, 5},
+    {65, 8},
+    {59, 5},
     {0, 16},
 };
 static const arc arcs_9_17[1] = {
-    {60, 6},
+    {58, 6},
 };
 static const arc arcs_9_18[4] = {
-    {64, 2},
-    {61, 21},
-    {65, 22},
+    {63, 2},
+    {59, 21},
+    {64, 22},
     {0, 18},
 };
 static const arc arcs_9_19[3] = {
-    {66, 18},
-    {61, 5},
+    {65, 18},
+    {59, 5},
     {0, 19},
 };
 static const arc arcs_9_20[5] = {
     {6, 23},
-    {64, 2},
-    {61, 24},
-    {65, 25},
+    {63, 2},
+    {59, 24},
+    {64, 25},
     {0, 20},
 };
 static const arc arcs_9_21[3] = {
-    {64, 2},
-    {65, 22},
+    {63, 2},
+    {64, 22},
     {0, 21},
 };
 static const arc arcs_9_22[4] = {
-    {66, 18},
-    {67, 26},
-    {61, 5},
+    {65, 18},
+    {66, 26},
+    {59, 5},
     {0, 22},
 };
 static const arc arcs_9_23[4] = {
-    {66, 27},
-    {61, 5},
-    {65, 28},
+    {65, 27},
+    {59, 5},
+    {64, 28},
     {0, 23},
 };
 static const arc arcs_9_24[1] = {
-    {65, 25},
+    {64, 25},
 };
 static const arc arcs_9_25[4] = {
-    {66, 29},
-    {67, 30},
-    {61, 5},
+    {65, 29},
+    {66, 30},
+    {59, 5},
     {0, 25},
 };
 static const arc arcs_9_26[1] = {
-    {60, 19},
+    {58, 19},
 };
 static const arc arcs_9_27[4] = {
-    {64, 2},
-    {61, 31},
-    {65, 32},
+    {63, 2},
+    {59, 31},
+    {64, 32},
     {0, 27},
 };
 static const arc arcs_9_28[3] = {
-    {66, 27},
-    {61, 5},
+    {65, 27},
+    {59, 5},
     {0, 28},
 };
 static const arc arcs_9_29[5] = {
     {6, 33},
-    {64, 2},
-    {61, 34},
-    {65, 25},
+    {63, 2},
+    {59, 34},
+    {64, 25},
     {0, 29},
 };
 static const arc arcs_9_30[1] = {
-    {60, 35},
+    {58, 35},
 };
 static const arc arcs_9_31[3] = {
-    {64, 2},
-    {65, 32},
+    {63, 2},
+    {64, 32},
     {0, 31},
 };
 static const arc arcs_9_32[4] = {
-    {66, 27},
-    {67, 36},
-    {61, 5},
+    {65, 27},
+    {66, 36},
+    {59, 5},
     {0, 32},
 };
 static const arc arcs_9_33[4] = {
-    {66, 37},
-    {61, 5},
-    {65, 38},
+    {65, 37},
+    {59, 5},
+    {64, 38},
     {0, 33},
 };
 static const arc arcs_9_34[4] = {
     {6, 33},
-    {64, 2},
-    {65, 25},
+    {63, 2},
+    {64, 25},
     {0, 34},
 };
 static const arc arcs_9_35[3] = {
-    {66, 29},
-    {61, 5},
+    {65, 29},
+    {59, 5},
     {0, 35},
 };
 static const arc arcs_9_36[1] = {
-    {60, 28},
+    {58, 28},
 };
 static const arc arcs_9_37[4] = {
-    {64, 2},
-    {61, 39},
-    {65, 40},
+    {63, 2},
+    {59, 39},
+    {64, 40},
     {0, 37},
 };
 static const arc arcs_9_38[3] = {
-    {66, 37},
-    {61, 5},
+    {65, 37},
+    {59, 5},
     {0, 38},
 };
 static const arc arcs_9_39[3] = {
-    {64, 2},
-    {65, 40},
+    {63, 2},
+    {64, 40},
     {0, 39},
 };
 static const arc arcs_9_40[4] = {
-    {66, 37},
-    {67, 41},
-    {61, 5},
+    {65, 37},
+    {66, 41},
+    {59, 5},
     {0, 40},
 };
 static const arc arcs_9_41[1] = {
-    {60, 38},
+    {58, 38},
 };
 static state states_9[42] = {
     {3, arcs_9_0},
@@ -440,11 +426,11 @@
     {40, 1},
 };
 static const arc arcs_10_1[2] = {
-    {59, 2},
+    {57, 2},
     {0, 1},
 };
 static const arc arcs_10_2[1] = {
-    {60, 3},
+    {58, 3},
 };
 static const arc arcs_10_3[1] = {
     {0, 3},
@@ -457,153 +443,153 @@
 };
 static const arc arcs_11_0[3] = {
     {6, 1},
-    {64, 2},
-    {70, 3},
+    {63, 2},
+    {69, 3},
 };
 static const arc arcs_11_1[3] = {
-    {66, 4},
-    {70, 5},
+    {65, 4},
+    {69, 5},
     {0, 1},
 };
 static const arc arcs_11_2[1] = {
-    {70, 6},
+    {69, 6},
 };
 static const arc arcs_11_3[3] = {
-    {66, 7},
-    {67, 8},
+    {65, 7},
+    {66, 8},
     {0, 3},
 };
 static const arc arcs_11_4[3] = {
-    {64, 2},
-    {70, 9},
+    {63, 2},
+    {69, 9},
     {0, 4},
 };
 static const arc arcs_11_5[2] = {
-    {66, 4},
+    {65, 4},
     {0, 5},
 };
 static const arc arcs_11_6[2] = {
-    {66, 10},
+    {65, 10},
     {0, 6},
 };
 static const arc arcs_11_7[5] = {
     {6, 11},
-    {64, 2},
-    {68, 12},
-    {70, 3},
+    {63, 2},
+    {67, 12},
+    {69, 3},
     {0, 7},
 };
 static const arc arcs_11_8[1] = {
-    {60, 13},
+    {58, 13},
 };
 static const arc arcs_11_9[3] = {
-    {66, 4},
-    {67, 14},
+    {65, 4},
+    {66, 14},
     {0, 9},
 };
 static const arc arcs_11_10[1] = {
     {0, 10},
 };
 static const arc arcs_11_11[3] = {
-    {66, 15},
-    {70, 16},
+    {65, 15},
+    {69, 16},
     {0, 11},
 };
 static const arc arcs_11_12[2] = {
-    {66, 17},
+    {65, 17},
     {0, 12},
 };
 static const arc arcs_11_13[2] = {
-    {66, 7},
+    {65, 7},
     {0, 13},
 };
 static const arc arcs_11_14[1] = {
-    {60, 5},
+    {58, 5},
 };
 static const arc arcs_11_15[3] = {
-    {64, 2},
-    {70, 18},
+    {63, 2},
+    {69, 18},
     {0, 15},
 };
 static const arc arcs_11_16[2] = {
-    {66, 15},
+    {65, 15},
     {0, 16},
 };
 static const arc arcs_11_17[4] = {
     {6, 19},
-    {64, 2},
-    {70, 20},
+    {63, 2},
+    {69, 20},
     {0, 17},
 };
 static const arc arcs_11_18[3] = {
-    {66, 15},
-    {67, 21},
+    {65, 15},
+    {66, 21},
     {0, 18},
 };
 static const arc arcs_11_19[3] = {
-    {66, 22},
-    {70, 23},
+    {65, 22},
+    {69, 23},
     {0, 19},
 };
 static const arc arcs_11_20[3] = {
-    {66, 24},
-    {67, 25},
+    {65, 24},
+    {66, 25},
     {0, 20},
 };
 static const arc arcs_11_21[1] = {
-    {60, 16},
+    {58, 16},
 };
 static const arc arcs_11_22[3] = {
-    {64, 2},
-    {70, 26},
+    {63, 2},
+    {69, 26},
     {0, 22},
 };
 static const arc arcs_11_23[2] = {
-    {66, 22},
+    {65, 22},
     {0, 23},
 };
 static const arc arcs_11_24[4] = {
     {6, 27},
-    {64, 2},
-    {70, 20},
+    {63, 2},
+    {69, 20},
     {0, 24},
 };
 static const arc arcs_11_25[1] = {
-    {60, 28},
+    {58, 28},
 };
 static const arc arcs_11_26[3] = {
-    {66, 22},
-    {67, 29},
+    {65, 22},
+    {66, 29},
     {0, 26},
 };
 static const arc arcs_11_27[3] = {
-    {66, 30},
-    {70, 31},
+    {65, 30},
+    {69, 31},
     {0, 27},
 };
 static const arc arcs_11_28[2] = {
-    {66, 24},
+    {65, 24},
     {0, 28},
 };
 static const arc arcs_11_29[1] = {
-    {60, 23},
+    {58, 23},
 };
 static const arc arcs_11_30[3] = {
-    {64, 2},
-    {70, 32},
+    {63, 2},
+    {69, 32},
     {0, 30},
 };
 static const arc arcs_11_31[2] = {
-    {66, 30},
+    {65, 30},
     {0, 31},
 };
 static const arc arcs_11_32[3] = {
-    {66, 30},
-    {67, 33},
+    {65, 30},
+    {66, 33},
     {0, 32},
 };
 static const arc arcs_11_33[1] = {
-    {60, 31},
+    {58, 31},
 };
 static state states_11[34] = {
     {3, arcs_11_0},
@@ -663,15 +649,15 @@
     {1, arcs_13_1},
 };
 static const arc arcs_14_0[1] = {
-    {71, 1},
+    {70, 1},
 };
 static const arc arcs_14_1[2] = {
-    {72, 2},
+    {71, 2},
     {2, 3},
 };
 static const arc arcs_14_2[2] = {
     {2, 3},
-    {71, 1},
+    {70, 1},
 };
 static const arc arcs_14_3[1] = {
     {0, 3},
@@ -683,6 +669,7 @@
     {1, arcs_14_3},
 };
 static const arc arcs_15_0[8] = {
+    {72, 1},
     {73, 1},
     {74, 1},
     {75, 1},
@@ -690,7 +677,6 @@
     {77, 1},
     {78, 1},
     {79, 1},
-    {80, 1},
 };
 static const arc arcs_15_1[1] = {
     {0, 1},
@@ -700,28 +686,28 @@
     {1, arcs_15_1},
 };
 static const arc arcs_16_0[1] = {
-    {81, 1},
+    {80, 1},
 };
 static const arc arcs_16_1[4] = {
-    {67, 2},
-    {82, 3},
-    {83, 4},
+    {66, 2},
+    {81, 3},
+    {82, 4},
     {0, 1},
 };
 static const arc arcs_16_2[2] = {
-    {81, 5},
-    {84, 5},
+    {80, 5},
+    {83, 5},
 };
 static const arc arcs_16_3[1] = {
     {0, 3},
 };
 static const arc arcs_16_4[2] = {
     {47, 3},
-    {84, 3},
+    {83, 3},
 };
 static const arc arcs_16_5[3] = {
-    {67, 2},
-    {61, 3},
+    {66, 2},
+    {59, 3},
     {0, 5},
 };
 static state states_16[6] = {
@@ -733,18 +719,18 @@
     {3, arcs_16_5},
 };
 static const arc arcs_17_0[1] = {
-    {59, 1},
+    {57, 1},
 };
 static const arc arcs_17_1[1] = {
-    {60, 2},
+    {58, 2},
 };
 static const arc arcs_17_2[2] = {
-    {67, 3},
+    {66, 3},
     {0, 2},
 };
 static const arc arcs_17_3[2] = {
-    {81, 4},
-    {84, 4},
+    {80, 4},
+    {83, 4},
 };
 static const arc arcs_17_4[1] = {
     {0, 4},
@@ -757,16 +743,16 @@
     {1, arcs_17_4},
 };
 static const arc arcs_18_0[2] = {
-    {85, 1},
-    {60, 1},
+    {84, 1},
+    {58, 1},
 };
 static const arc arcs_18_1[2] = {
-    {66, 2},
+    {65, 2},
     {0, 1},
 };
 static const arc arcs_18_2[3] = {
-    {85, 1},
-    {60, 1},
+    {84, 1},
+    {58, 1},
     {0, 2},
 };
 static state states_18[3] = {
@@ -775,6 +761,7 @@
     {3, arcs_18_2},
 };
 static const arc arcs_19_0[13] = {
+    {85, 1},
     {86, 1},
     {87, 1},
     {88, 1},
@@ -787,7 +774,6 @@
     {95, 1},
     {96, 1},
     {97, 1},
-    {98, 1},
 };
 static const arc arcs_19_1[1] = {
     {0, 1},
@@ -800,7 +786,7 @@
     {20, 1},
 };
 static const arc arcs_20_1[1] = {
-    {99, 2},
+    {98, 2},
 };
 static const arc arcs_20_2[1] = {
     {0, 2},
@@ -821,11 +807,11 @@
     {1, arcs_21_1},
 };
 static const arc arcs_22_0[5] = {
+    {99, 1},
     {100, 1},
     {101, 1},
     {102, 1},
     {103, 1},
-    {104, 1},
 };
 static const arc arcs_22_1[1] = {
     {0, 1},
@@ -858,7 +844,7 @@
     {31, 1},
 };
 static const arc arcs_25_1[2] = {
-    {81, 2},
+    {80, 2},
     {0, 1},
 };
 static const arc arcs_25_2[1] = {
@@ -870,7 +856,7 @@
     {1, arcs_25_2},
 };
 static const arc arcs_26_0[1] = {
-    {84, 1},
+    {83, 1},
 };
 static const arc arcs_26_1[1] = {
     {0, 1},
@@ -883,7 +869,7 @@
     {30, 1},
 };
 static const arc arcs_27_1[2] = {
-    {60, 2},
+    {58, 2},
     {0, 1},
 };
 static const arc arcs_27_2[2] = {
@@ -891,7 +877,7 @@
     {0, 2},
 };
 static const arc arcs_27_3[1] = {
-    {60, 4},
+    {58, 4},
 };
 static const arc arcs_27_4[1] = {
     {0, 4},
@@ -904,8 +890,8 @@
     {1, arcs_27_4},
 };
 static const arc arcs_28_0[2] = {
+    {104, 1},
     {105, 1},
-    {106, 1},
 };
 static const arc arcs_28_1[1] = {
     {0, 1},
@@ -918,7 +904,7 @@
     {25, 1},
 };
 static const arc arcs_29_1[1] = {
-    {107, 2},
+    {106, 2},
 };
 static const arc arcs_29_2[1] = {
     {0, 2},
@@ -932,15 +918,15 @@
     {22, 1},
 };
 static const arc arcs_30_1[3] = {
-    {108, 2},
+    {107, 2},
     {9, 2},
-    {49, 3},
+    {108, 3},
 };
 static const arc arcs_30_2[4] = {
-    {108, 2},
+    {107, 2},
     {9, 2},
     {25, 4},
-    {49, 3},
+    {108, 3},
 };
 static const arc arcs_30_3[1] = {
     {25, 4},
@@ -957,7 +943,7 @@
     {0, 6},
 };
 static const arc arcs_30_7[1] = {
-    {50, 6},
+    {61, 6},
 };
 static state states_30[8] = {
     {1, arcs_30_0},
@@ -989,7 +975,7 @@
     {1, arcs_31_3},
 };
 static const arc arcs_32_0[1] = {
-    {49, 1},
+    {108, 1},
 };
 static const arc arcs_32_1[2] = {
     {111, 2},
@@ -1011,7 +997,7 @@
     {110, 1},
 };
 static const arc arcs_33_1[2] = {
-    {66, 2},
+    {65, 2},
     {0, 1},
 };
 static const arc arcs_33_2[2] = {
@@ -1027,7 +1013,7 @@
     {112, 1},
 };
 static const arc arcs_34_1[2] = {
-    {66, 0},
+    {65, 0},
     {0, 1},
 };
 static state states_34[2] = {
@@ -1038,7 +1024,7 @@
     {40, 1},
 };
 static const arc arcs_35_1[2] = {
-    {108, 0},
+    {107, 0},
     {0, 1},
 };
 static state states_35[2] = {
@@ -1052,7 +1038,7 @@
     {40, 2},
 };
 static const arc arcs_36_2[2] = {
-    {66, 1},
+    {65, 1},
     {0, 2},
 };
 static state states_36[3] = {
@@ -1067,7 +1053,7 @@
     {40, 2},
 };
 static const arc arcs_37_2[2] = {
-    {66, 1},
+    {65, 1},
     {0, 2},
 };
 static state states_37[3] = {
@@ -1079,14 +1065,14 @@
     {15, 1},
 };
 static const arc arcs_38_1[1] = {
-    {60, 2},
+    {58, 2},
 };
 static const arc arcs_38_2[2] = {
-    {66, 3},
+    {65, 3},
     {0, 2},
 };
 static const arc arcs_38_3[1] = {
-    {60, 4},
+    {58, 4},
 };
 static const arc arcs_38_4[1] = {
     {0, 4},
@@ -1100,10 +1086,10 @@
 };
 static const arc arcs_39_0[9] = {
     {113, 1},
-    {55, 1},
     {53, 1},
+    {51, 1},
     {114, 1},
-    {56, 1},
+    {54, 1},
     {115, 1},
     {116, 1},
     {117, 1},
@@ -1121,7 +1107,7 @@
 };
 static const arc arcs_40_1[3] = {
     {114, 2},
-    {56, 2},
+    {54, 2},
     {118, 2},
 };
 static const arc arcs_40_2[1] = {
@@ -1136,24 +1122,24 @@
     {24, 1},
 };
 static const arc arcs_41_1[1] = {
-    {119, 2},
+    {49, 2},
 };
 static const arc arcs_41_2[1] = {
-    {59, 3},
+    {57, 3},
 };
 static const arc arcs_41_3[1] = {
-    {120, 4},
+    {119, 4},
 };
 static const arc arcs_41_4[3] = {
-    {121, 1},
-    {122, 5},
+    {120, 1},
+    {121, 5},
     {0, 4},
 };
 static const arc arcs_41_5[1] = {
-    {59, 6},
+    {57, 6},
 };
 static const arc arcs_41_6[1] = {
-    {120, 7},
+    {119, 7},
 };
 static const arc arcs_41_7[1] = {
     {0, 7},
@@ -1172,23 +1158,23 @@
     {33, 1},
 };
 static const arc arcs_42_1[1] = {
-    {119, 2},
+    {49, 2},
 };
 static const arc arcs_42_2[1] = {
-    {59, 3},
+    {57, 3},
 };
 static const arc arcs_42_3[1] = {
-    {120, 4},
+    {119, 4},
 };
 static const arc arcs_42_4[2] = {
-    {122, 5},
+    {121, 5},
     {0, 4},
 };
 static const arc arcs_42_5[1] = {
-    {59, 6},
+    {57, 6},
 };
 static const arc arcs_42_6[1] = {
-    {120, 7},
+    {119, 7},
 };
 static const arc arcs_42_7[1] = {
     {0, 7},
@@ -1207,33 +1193,33 @@
     {21, 1},
 };
 static const arc arcs_43_1[1] = {
-    {99, 2},
+    {98, 2},
 };
 static const arc arcs_43_2[1] = {
-    {123, 3},
+    {122, 3},
 };
 static const arc arcs_43_3[1] = {
     {47, 4},
 };
 static const arc arcs_43_4[1] = {
-    {59, 5},
+    {57, 5},
 };
 static const arc arcs_43_5[2] = {
-    {61, 6},
-    {120, 7},
+    {59, 6},
+    {119, 7},
 };
 static const arc arcs_43_6[1] = {
-    {120, 7},
+    {119, 7},
 };
 static const arc arcs_43_7[2] = {
-    {122, 8},
+    {121, 8},
     {0, 7},
 };
 static const arc arcs_43_8[1] = {
-    {59, 9},
+    {57, 9},
 };
 static const arc arcs_43_9[1] = {
-    {120, 10},
+    {119, 10},
 };
 static const arc arcs_43_10[1] = {
     {0, 10},
@@ -1255,44 +1241,44 @@
     {32, 1},
 };
 static const arc arcs_44_1[1] = {
-    {59, 2},
+    {57, 2},
 };
 static const arc arcs_44_2[1] = {
-    {120, 3},
+    {119, 3},
 };
 static const arc arcs_44_3[2] = {
-    {124, 4},
-    {125, 5},
+    {123, 4},
+    {124, 5},
 };
 static const arc arcs_44_4[1] = {
-    {59, 6},
+    {57, 6},
 };
 static const arc arcs_44_5[1] = {
-    {59, 7},
+    {57, 7},
 };
 static const arc arcs_44_6[1] = {
-    {120, 8},
+    {119, 8},
 };
 static const arc arcs_44_7[1] = {
-    {120, 9},
+    {119, 9},
 };
 static const arc arcs_44_8[1] = {
     {0, 8},
 };
 static const arc arcs_44_9[4] = {
-    {122, 10},
-    {124, 4},
-    {125, 5},
+    {121, 10},
+    {123, 4},
+    {124, 5},
     {0, 9},
 };
 static const arc arcs_44_10[1] = {
-    {59, 11},
+    {57, 11},
 };
 static const arc arcs_44_11[1] = {
-    {120, 12},
+    {119, 12},
 };
 static const arc arcs_44_12[2] = {
-    {124, 4},
+    {123, 4},
     {0, 12},
 };
 static state states_44[13] = {
@@ -1314,18 +1300,18 @@
     {34, 1},
 };
 static const arc arcs_45_1[1] = {
-    {126, 2},
+    {125, 2},
 };
 static const arc arcs_45_2[2] = {
-    {66, 1},
-    {59, 3},
+    {65, 1},
+    {57, 3},
 };
 static const arc arcs_45_3[2] = {
-    {61, 4},
-    {120, 5},
+    {59, 4},
+    {119, 5},
 };
 static const arc arcs_45_4[1] = {
-    {120, 5},
+    {119, 5},
 };
 static const arc arcs_45_5[1] = {
     {0, 5},
@@ -1339,14 +1325,14 @@
     {1, arcs_45_5},
 };
 static const arc arcs_46_0[1] = {
-    {60, 1},
+    {58, 1},
 };
 static const arc arcs_46_1[2] = {
     {111, 2},
     {0, 1},
 };
 static const arc arcs_46_2[1] = {
-    {127, 3},
+    {126, 3},
 };
 static const arc arcs_46_3[1] = {
     {0, 3},
@@ -1358,10 +1344,10 @@
     {1, arcs_46_3},
 };
 static const arc arcs_47_0[1] = {
-    {128, 1},
+    {127, 1},
 };
 static const arc arcs_47_1[2] = {
-    {60, 2},
+    {58, 2},
     {0, 1},
 };
 static const arc arcs_47_2[2] = {
@@ -1386,7 +1372,7 @@
     {4, 2},
 };
 static const arc arcs_48_1[1] = {
-    {129, 3},
+    {128, 3},
 };
 static const arc arcs_48_2[1] = {
     {0, 2},
@@ -1395,7 +1381,7 @@
     {45, 4},
 };
 static const arc arcs_48_4[2] = {
-    {130, 2},
+    {129, 2},
     {45, 4},
 };
 static state states_48[5] = {
@@ -1406,14 +1392,14 @@
     {2, arcs_48_4},
 };
 static const arc arcs_49_0[1] = {
-    {60, 1},
+    {58, 1},
 };
 static const arc arcs_49_1[2] = {
-    {131, 2},
+    {130, 2},
     {0, 1},
 };
 static const arc arcs_49_2[1] = {
-    {60, 3},
+    {58, 3},
 };
 static const arc arcs_49_3[1] = {
     {0, 3},
@@ -1425,8 +1411,8 @@
     {1, arcs_49_3},
 };
 static const arc arcs_50_0[2] = {
-    {132, 1},
-    {133, 2},
+    {131, 1},
+    {132, 2},
 };
 static const arc arcs_50_1[1] = {
     {0, 1},
@@ -1436,13 +1422,13 @@
     {0, 2},
 };
 static const arc arcs_50_3[1] = {
-    {133, 4},
+    {132, 4},
 };
 static const arc arcs_50_4[1] = {
-    {122, 5},
+    {121, 5},
 };
 static const arc arcs_50_5[1] = {
-    {60, 1},
+    {58, 1},
 };
 static state states_50[6] = {
     {2, arcs_50_0},
@@ -1453,8 +1439,8 @@
     {1, arcs_50_5},
 };
 static const arc arcs_51_0[2] = {
-    {135, 1},
-    {133, 1},
+    {134, 1},
+    {132, 1},
 };
 static const arc arcs_51_1[1] = {
     {0, 1},
@@ -1467,14 +1453,14 @@
     {26, 1},
 };
 static const arc arcs_52_1[2] = {
-    {59, 2},
-    {69, 3},
+    {57, 2},
+    {68, 3},
 };
 static const arc arcs_52_2[1] = {
-    {60, 4},
+    {58, 4},
 };
 static const arc arcs_52_3[1] = {
-    {59, 2},
+    {57, 2},
 };
 static const arc arcs_52_4[1] = {
     {0, 4},
@@ -1490,14 +1476,14 @@
     {26, 1},
 };
 static const arc arcs_53_1[2] = {
-    {59, 2},
-    {69, 3},
+    {57, 2},
+    {68, 3},
 };
 static const arc arcs_53_2[1] = {
-    {134, 4},
+    {133, 4},
 };
 static const arc arcs_53_3[1] = {
-    {59, 2},
+    {57, 2},
 };
 static const arc arcs_53_4[1] = {
     {0, 4},
@@ -1510,10 +1496,10 @@
     {1, arcs_53_4},
 };
 static const arc arcs_54_0[1] = {
-    {136, 1},
+    {135, 1},
 };
 static const arc arcs_54_1[2] = {
-    {137, 0},
+    {136, 0},
     {0, 1},
 };
 static state states_54[2] = {
@@ -1521,10 +1507,10 @@
     {2, arcs_54_1},
 };
 static const arc arcs_55_0[1] = {
-    {138, 1},
+    {137, 1},
 };
 static const arc arcs_55_1[2] = {
-    {139, 0},
+    {138, 0},
     {0, 1},
 };
 static state states_55[2] = {
@@ -1533,10 +1519,10 @@
 };
 static const arc arcs_56_0[2] = {
     {28, 1},
-    {140, 2},
+    {139, 2},
 };
 static const arc arcs_56_1[1] = {
-    {138, 2},
+    {137, 2},
 };
 static const arc arcs_56_2[1] = {
     {0, 2},
@@ -1547,10 +1533,10 @@
     {1, arcs_56_2},
 };
 static const arc arcs_57_0[1] = {
-    {127, 1},
+    {126, 1},
 };
 static const arc arcs_57_1[2] = {
-    {141, 0},
+    {140, 0},
     {0, 1},
 };
 static state states_57[2] = {
@@ -1558,15 +1544,15 @@
     {2, arcs_57_1},
 };
 static const arc arcs_58_0[10] = {
+    {141, 1},
     {142, 1},
     {143, 1},
+    {141, 1},
     {144, 1},
-    {142, 1},
     {145, 1},
     {146, 1},
-    {147, 1},
-    {123, 1},
-    {148, 2},
+    {122, 1},
+    {147, 2},
     {28, 3},
 };
 static const arc arcs_58_1[1] = {
@@ -1577,7 +1563,7 @@
     {0, 2},
 };
 static const arc arcs_58_3[1] = {
-    {123, 1},
+    {122, 1},
 };
 static state states_58[4] = {
     {10, arcs_58_0},
@@ -1589,7 +1575,7 @@
     {6, 1},
 };
 static const arc arcs_59_1[1] = {
-    {127, 2},
+    {126, 2},
 };
 static const arc arcs_59_2[1] = {
     {0, 2},
@@ -1600,10 +1586,10 @@
     {1, arcs_59_2},
 };
 static const arc arcs_60_0[1] = {
-    {149, 1},
+    {148, 1},
 };
 static const arc arcs_60_1[2] = {
-    {150, 0},
+    {149, 0},
     {0, 1},
 };
 static state states_60[2] = {
@@ -1611,10 +1597,10 @@
     {2, arcs_60_1},
 };
 static const arc arcs_61_0[1] = {
-    {151, 1},
+    {150, 1},
 };
 static const arc arcs_61_1[2] = {
-    {152, 0},
+    {151, 0},
     {0, 1},
 };
 static state states_61[2] = {
@@ -1622,10 +1608,10 @@
     {2, arcs_61_1},
 };
 static const arc arcs_62_0[1] = {
-    {153, 1},
+    {152, 1},
 };
 static const arc arcs_62_1[2] = {
-    {154, 0},
+    {153, 0},
     {0, 1},
 };
 static state states_62[2] = {
@@ -1633,11 +1619,11 @@
     {2, arcs_62_1},
 };
 static const arc arcs_63_0[1] = {
-    {155, 1},
+    {154, 1},
 };
 static const arc arcs_63_1[3] = {
+    {155, 0},
     {156, 0},
-    {157, 0},
     {0, 1},
 };
 static state states_63[2] = {
@@ -1645,7 +1631,7 @@
     {3, arcs_63_1},
 };
 static const arc arcs_64_0[1] = {
-    {158, 1},
+    {157, 1},
 };
 static const arc arcs_64_1[3] = {
     {7, 0},
@@ -1657,13 +1643,13 @@
     {3, arcs_64_1},
 };
 static const arc arcs_65_0[1] = {
-    {159, 1},
+    {158, 1},
 };
 static const arc arcs_65_1[6] = {
-    {160, 0},
+    {159, 0},
     {6, 0},
-    {68, 0},
-    {161, 0},
+    {67, 0},
+    {160, 0},
     {10, 0},
     {0, 1},
 };
@@ -1675,10 +1661,10 @@
     {7, 1},
     {8, 1},
     {37, 1},
-    {162, 2},
+    {161, 2},
 };
 static const arc arcs_66_1[1] = {
-    {159, 2},
+    {158, 2},
 };
 static const arc arcs_66_2[1] = {
     {0, 2},
@@ -1689,14 +1675,14 @@
     {1, arcs_66_2},
 };
 static const arc arcs_67_0[1] = {
-    {163, 1},
+    {162, 1},
 };
 static const arc arcs_67_1[2] = {
-    {64, 2},
+    {63, 2},
     {0, 1},
 };
 static const arc arcs_67_2[1] = {
-    {159, 3},
+    {158, 3},
 };
 static const arc arcs_67_3[1] = {
     {0, 3},
@@ -1709,13 +1695,13 @@
 };
 static const arc arcs_68_0[2] = {
     {39, 1},
-    {164, 2},
+    {163, 2},
 };
 static const arc arcs_68_1[1] = {
-    {164, 2},
+    {163, 2},
 };
 static const arc arcs_68_2[2] = {
-    {165, 2},
+    {164, 2},
     {0, 2},
 };
 static state states_68[3] = {
@@ -1736,33 +1722,33 @@
     {42, 5},
 };
 static const arc arcs_69_1[3] = {
-    {50, 2},
-    {166, 6},
-    {84, 6},
+    {61, 2},
+    {165, 6},
+    {83, 6},
 };
 static const arc arcs_69_2[1] = {
     {0, 2},
 };
 static const arc arcs_69_3[2] = {
-    {167, 2},
-    {166, 7},
+    {166, 2},
+    {165, 7},
 };
 static const arc arcs_69_4[2] = {
-    {168, 2},
-    {169, 8},
+    {167, 2},
+    {168, 8},
 };
 static const arc arcs_69_5[2] = {
     {42, 5},
     {0, 5},
 };
 static const arc arcs_69_6[1] = {
-    {50, 2},
+    {61, 2},
 };
 static const arc arcs_69_7[1] = {
-    {167, 2},
+    {166, 2},
 };
 static const arc arcs_69_8[1] = {
-    {168, 2},
+    {167, 2},
 };
 static state states_69[9] = {
     {10, arcs_69_0},
@@ -1776,24 +1762,24 @@
     {1, arcs_69_8},
 };
 static const arc arcs_70_0[2] = {
-    {119, 1},
-    {85, 1},
+    {49, 1},
+    {84, 1},
 };
 static const arc arcs_70_1[3] = {
-    {66, 2},
-    {170, 3},
+    {65, 2},
+    {169, 3},
     {0, 1},
 };
 static const arc arcs_70_2[3] = {
-    {119, 4},
-    {85, 4},
+    {49, 4},
+    {84, 4},
     {0, 2},
 };
 static const arc arcs_70_3[1] = {
     {0, 3},
 };
 static const arc arcs_70_4[2] = {
-    {66, 2},
+    {65, 2},
     {0, 4},
 };
 static state states_70[5] = {
@@ -1805,12 +1791,12 @@
 };
 static const arc arcs_71_0[3] = {
     {5, 1},
-    {108, 2},
+    {107, 2},
     {14, 3},
 };
 static const arc arcs_71_1[2] = {
-    {50, 4},
-    {51, 5},
+    {61, 4},
+    {170, 5},
 };
 static const arc arcs_71_2[1] = {
     {40, 4},
@@ -1822,10 +1808,10 @@
     {0, 4},
 };
 static const arc arcs_71_5[1] = {
-    {50, 4},
+    {61, 4},
 };
 static const arc arcs_71_6[1] = {
-    {167, 4},
+    {166, 4},
 };
 static state states_71[7] = {
     {3, arcs_71_0},
@@ -1840,7 +1826,7 @@
     {172, 1},
 };
 static const arc arcs_72_1[2] = {
-    {66, 2},
+    {65, 2},
     {0, 1},
 };
 static const arc arcs_72_2[2] = {
@@ -1853,16 +1839,16 @@
     {2, arcs_72_2},
 };
 static const arc arcs_73_0[2] = {
-    {59, 1},
-    {60, 2},
+    {57, 1},
+    {58, 2},
 };
 static const arc arcs_73_1[3] = {
     {173, 3},
-    {60, 4},
+    {58, 4},
     {0, 1},
 };
 static const arc arcs_73_2[2] = {
-    {59, 1},
+    {57, 1},
     {0, 2},
 };
 static const arc arcs_73_3[1] = {
@@ -1880,10 +1866,10 @@
     {2, arcs_73_4},
 };
 static const arc arcs_74_0[1] = {
-    {59, 1},
+    {57, 1},
 };
 static const arc arcs_74_1[2] = {
-    {60, 2},
+    {58, 2},
     {0, 1},
 };
 static const arc arcs_74_2[1] = {
@@ -1895,16 +1881,16 @@
     {1, arcs_74_2},
 };
 static const arc arcs_75_0[2] = {
-    {127, 1},
-    {85, 1},
+    {126, 1},
+    {84, 1},
 };
 static const arc arcs_75_1[2] = {
-    {66, 2},
+    {65, 2},
     {0, 1},
 };
 static const arc arcs_75_2[3] = {
-    {127, 1},
-    {85, 1},
+    {126, 1},
+    {84, 1},
     {0, 2},
 };
 static state states_75[3] = {
@@ -1913,14 +1899,14 @@
     {3, arcs_75_2},
 };
 static const arc arcs_76_0[1] = {
-    {60, 1},
+    {58, 1},
 };
 static const arc arcs_76_1[2] = {
-    {66, 2},
+    {65, 2},
     {0, 1},
 };
 static const arc arcs_76_2[2] = {
-    {60, 1},
+    {58, 1},
     {0, 2},
 };
 static state states_76[3] = {
@@ -1929,61 +1915,61 @@
     {2, arcs_76_2},
 };
 static const arc arcs_77_0[3] = {
-    {64, 1},
-    {85, 2},
-    {60, 3},
+    {63, 1},
+    {84, 2},
+    {58, 3},
 };
 static const arc arcs_77_1[1] = {
-    {127, 4},
+    {126, 4},
 };
 static const arc arcs_77_2[3] = {
-    {66, 5},
-    {170, 6},
+    {65, 5},
+    {169, 6},
     {0, 2},
 };
 static const arc arcs_77_3[4] = {
-    {66, 5},
-    {59, 7},
-    {170, 6},
+    {65, 5},
+    {57, 7},
+    {169, 6},
     {0, 3},
 };
 static const arc arcs_77_4[3] = {
-    {66, 8},
-    {170, 6},
+    {65, 8},
+    {169, 6},
     {0, 4},
 };
 static const arc arcs_77_5[3] = {
-    {85, 9},
-    {60, 9},
+    {84, 9},
+    {58, 9},
     {0, 5},
 };
 static const arc arcs_77_6[1] = {
     {0, 6},
 };
 static const arc arcs_77_7[1] = {
-    {60, 4},
+    {58, 4},
 };
 static const arc arcs_77_8[3] = {
-    {64, 10},
-    {60, 11},
+    {63, 10},
+    {58, 11},
     {0, 8},
 };
 static const arc arcs_77_9[2] = {
-    {66, 5},
+    {65, 5},
     {0, 9},
 };
 static const arc arcs_77_10[1] = {
-    {127, 12},
+    {126, 12},
 };
 static const arc arcs_77_11[1] = {
-    {59, 13},
+    {57, 13},
 };
 static const arc arcs_77_12[2] = {
-    {66, 8},
+    {65, 8},
     {0, 12},
 };
 static const arc arcs_77_13[1] = {
-    {60, 12},
+    {58, 12},
 };
 static state states_77[14] = {
     {3, arcs_77_0},
@@ -2009,20 +1995,20 @@
 };
 static const arc arcs_78_2[2] = {
     {5, 3},
-    {59, 4},
+    {57, 4},
 };
 static const arc arcs_78_3[2] = {
-    {50, 5},
-    {51, 6},
+    {61, 5},
+    {170, 6},
 };
 static const arc arcs_78_4[1] = {
-    {120, 7},
+    {119, 7},
 };
 static const arc arcs_78_5[1] = {
-    {59, 4},
+    {57, 4},
 };
 static const arc arcs_78_6[1] = {
-    {50, 5},
+    {61, 5},
 };
 static const arc arcs_78_7[1] = {
     {0, 7},
@@ -2041,7 +2027,7 @@
     {174, 1},
 };
 static const arc arcs_79_1[2] = {
-    {66, 2},
+    {65, 2},
     {0, 1},
 };
 static const arc arcs_79_2[2] = {
@@ -2055,16 +2041,16 @@
 };
 static const arc arcs_80_0[3] = {
     {6, 1},
-    {64, 1},
-    {60, 2},
+    {63, 1},
+    {58, 2},
 };
 static const arc arcs_80_1[1] = {
-    {60, 3},
+    {58, 3},
 };
 static const arc arcs_80_2[4] = {
-    {131, 1},
-    {67, 1},
-    {170, 3},
+    {130, 1},
+    {66, 1},
+    {169, 3},
     {0, 2},
 };
 static const arc arcs_80_3[1] = {
@@ -2077,7 +2063,7 @@
     {1, arcs_80_3},
 };
 static const arc arcs_81_0[2] = {
-    {170, 1},
+    {169, 1},
     {176, 1},
 };
 static const arc arcs_81_1[1] = {
@@ -2091,13 +2077,13 @@
     {21, 1},
 };
 static const arc arcs_82_1[1] = {
-    {99, 2},
+    {98, 2},
 };
 static const arc arcs_82_2[1] = {
-    {123, 3},
+    {122, 3},
 };
 static const arc arcs_82_3[1] = {
-    {133, 4},
+    {132, 4},
 };
 static const arc arcs_82_4[2] = {
     {175, 5},
@@ -2133,7 +2119,7 @@
     {24, 1},
 };
 static const arc arcs_84_1[1] = {
-    {134, 2},
+    {133, 2},
 };
 static const arc arcs_84_2[2] = {
     {175, 3},
@@ -2175,10 +2161,10 @@
 };
 static const arc arcs_87_0[2] = {
     {22, 1},
-    {81, 2},
+    {80, 2},
 };
 static const arc arcs_87_1[1] = {
-    {60, 2},
+    {58, 2},
 };
 static const arc arcs_87_2[1] = {
     {0, 2},
@@ -2193,8 +2179,8 @@
     {4, 2},
 };
 static const arc arcs_88_1[2] = {
-    {129, 3},
-    {61, 4},
+    {128, 3},
+    {59, 4},
 };
 static const arc arcs_88_2[1] = {
     {0, 2},
@@ -2206,11 +2192,11 @@
     {2, 6},
 };
 static const arc arcs_88_5[2] = {
-    {130, 2},
+    {129, 2},
     {45, 5},
 };
 static const arc arcs_88_6[1] = {
-    {129, 3},
+    {128, 3},
 };
 static state states_88[7] = {
     {2, arcs_88_0},
@@ -2240,17 +2226,17 @@
     {5, 1},
 };
 static const arc arcs_90_1[2] = {
-    {50, 2},
+    {61, 2},
     {182, 3},
 };
 static const arc arcs_90_2[1] = {
-    {58, 4},
+    {56, 4},
 };
 static const arc arcs_90_3[1] = {
-    {50, 2},
+    {61, 2},
 };
 static const arc arcs_90_4[1] = {
-    {60, 5},
+    {58, 5},
 };
 static const arc arcs_90_5[1] = {
     {0, 5},
@@ -2265,27 +2251,27 @@
 };
 static const arc arcs_91_0[3] = {
     {6, 1},
-    {64, 2},
-    {60, 3},
+    {63, 2},
+    {58, 3},
 };
 static const arc arcs_91_1[3] = {
-    {66, 4},
-    {60, 5},
+    {65, 4},
+    {58, 5},
     {0, 1},
 };
 static const arc arcs_91_2[1] = {
-    {60, 6},
+    {58, 6},
 };
 static const arc arcs_91_3[2] = {
-    {66, 7},
+    {65, 7},
     {0, 3},
 };
 static const arc arcs_91_4[2] = {
-    {64, 2},
-    {60, 5},
+    {63, 2},
+    {58, 5},
 };
 static const arc arcs_91_5[2] = {
-    {66, 4},
+    {65, 4},
     {0, 5},
 };
 static const arc arcs_91_6[1] = {
@@ -2293,21 +2279,21 @@
 };
 static const arc arcs_91_7[4] = {
     {6, 8},
-    {64, 2},
-    {60, 3},
+    {63, 2},
+    {58, 3},
     {0, 7},
 };
 static const arc arcs_91_8[3] = {
-    {66, 9},
-    {60, 10},
+    {65, 9},
+    {58, 10},
     {0, 8},
 };
 static const arc arcs_91_9[2] = {
-    {64, 2},
-    {60, 10},
+    {63, 2},
+    {58, 10},
 };
 static const arc arcs_91_10[2] = {
-    {66, 9},
+    {65, 9},
     {0, 10},
 };
 static state states_91[11] = {
@@ -2330,7 +2316,7 @@
      "\344\377\377\377\377\027\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {258, "eval_input", 3, states_2,
      "\240\173\000\024\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {259, "decorator", 7, states_3,
+    {259, "decorator", 4, states_3,
      "\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {260, "decorators", 2, states_4,
      "\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
@@ -2343,11 +2329,11 @@
     {264, "parameters", 4, states_8,
      "\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {265, "typedargslist", 42, states_9,
-     "\100\000\000\000\000\001\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+     "\100\000\000\000\000\001\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {266, "tfpdef", 4, states_10,
      "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {267, "varargslist", 34, states_11,
-     "\100\000\000\000\000\001\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+     "\100\000\000\000\000\001\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {268, "vfpdef", 2, states_12,
      "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {269, "stmt", 2, states_13,
@@ -2359,11 +2345,11 @@
     {272, "expr_stmt", 6, states_16,
      "\340\173\000\024\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {273, "annassign", 5, states_17,
-     "\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+     "\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {274, "testlist_star_expr", 3, states_18,
      "\340\173\000\024\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {275, "augassign", 2, states_19,
-     "\000\000\000\000\000\000\000\000\000\000\300\377\007\000\000\000\000\000\000\000\000\000\000"},
+     "\000\000\000\000\000\000\000\000\000\000\340\377\003\000\000\000\000\000\000\000\000\000\000"},
     {276, "del_stmt", 3, states_20,
      "\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {277, "pass_stmt", 2, states_21,
@@ -2419,7 +2405,7 @@
     {302, "with_item", 4, states_46,
      "\240\173\000\024\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {303, "except_clause", 5, states_47,
-     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000"},
+     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000"},
     {304, "suite", 5, states_48,
      "\344\373\325\376\270\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {305, "namedexpr_test", 4, states_49,
@@ -2441,7 +2427,7 @@
     {313, "comparison", 2, states_57,
      "\240\173\000\000\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {314, "comp_op", 4, states_58,
-     "\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\010\000\300\037\000\000\000\000"},
+     "\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\004\000\340\017\000\000\000\000"},
     {315, "star_expr", 3, states_59,
      "\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {316, "expr", 2, states_60,
@@ -2467,25 +2453,25 @@
     {326, "testlist_comp", 5, states_70,
      "\340\173\000\024\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {327, "trailer", 7, states_71,
-     "\040\100\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"},
+     "\040\100\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"},
     {328, "subscriptlist", 3, states_72,
-     "\240\173\000\024\260\007\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+     "\240\173\000\024\260\007\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {329, "subscript", 5, states_73,
-     "\240\173\000\024\260\007\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+     "\240\173\000\024\260\007\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {330, "sliceop", 3, states_74,
-     "\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+     "\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {331, "exprlist", 3, states_75,
      "\340\173\000\000\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {332, "testlist", 3, states_76,
      "\240\173\000\024\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {333, "dictorsetmaker", 14, states_77,
-     "\340\173\000\024\260\007\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+     "\340\173\000\024\260\007\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {334, "classdef", 8, states_78,
      "\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {335, "arglist", 3, states_79,
-     "\340\173\000\024\260\007\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+     "\340\173\000\024\260\007\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {336, "argument", 4, states_80,
-     "\340\173\000\024\260\007\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+     "\340\173\000\024\260\007\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {337, "comp_iter", 2, states_81,
      "\000\000\040\001\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {338, "sync_comp_for", 6, states_82,
@@ -2507,7 +2493,7 @@
     {346, "func_type", 6, states_90,
      "\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
     {347, "typelist", 11, states_91,
-     "\340\173\000\024\260\007\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+     "\340\173\000\024\260\007\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
 };
 static const label labels[183] = {
     {0, "EMPTY"},
@@ -2559,9 +2545,7 @@
     {258, 0},
     {332, 0},
     {259, 0},
-    {291, 0},
-    {8, 0},
-    {335, 0},
+    {305, 0},
     {260, 0},
     {261, 0},
     {262, 0},
@@ -2573,6 +2557,7 @@
     {306, 0},
     {58, 0},
     {344, 0},
+    {8, 0},
     {265, 0},
     {35, 0},
     {266, 0},
@@ -2619,6 +2604,7 @@
     {285, 0},
     {290, 0},
     {23, 0},
+    {291, 0},
     {289, 0},
     {287, 0},
     {1, "as"},
@@ -2629,7 +2615,6 @@
     {300, 0},
     {298, 0},
     {301, 0},
-    {305, 0},
     {304, 0},
     {1, "elif"},
     {1, "else"},
@@ -2681,6 +2666,7 @@
     {26, 0},
     {333, 0},
     {339, 0},
+    {335, 0},
     {328, 0},
     {329, 0},
     {330, 0},