diff --git a/Python/ceval.c b/Python/ceval.c
index 866c57a..25548e3 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -4399,6 +4399,14 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
             DISPATCH();
         }
 
+        case TARGET(ROT_N): {
+            PyObject *top = TOP();
+            memmove(&PEEK(oparg - 1), &PEEK(oparg),
+                    sizeof(PyObject*) * (oparg - 1));
+            PEEK(oparg) = top;
+            DISPATCH();
+        }
+
         case TARGET(EXTENDED_ARG): {
             int oldoparg = oparg;
             NEXTOPARG();
diff --git a/Python/compile.c b/Python/compile.c
index 4411edb..7cc75ad 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -230,8 +230,28 @@ struct compiler {
 };
 
 typedef struct {
+    // A list of strings corresponding to name captures. It is used to track:
+    // - Repeated name assignments in the same pattern.
+    // - Different name assignments in alternatives.
+    // - The order of name assignments in alternatives.
     PyObject *stores;
+    // If 0, any name captures against our subject will raise.
     int allow_irrefutable;
+    // An array of blocks to jump to on failure. Jumping to fail_pop[i] will pop
+    // i items off of the stack. The end result looks like this (with each block
+    // falling through to the next):
+    // fail_pop[4]: POP_TOP
+    // fail_pop[3]: POP_TOP
+    // fail_pop[2]: POP_TOP
+    // fail_pop[1]: POP_TOP
+    // fail_pop[0]: NOP
+    basicblock **fail_pop;
+    // The current length of fail_pop.
+    Py_ssize_t fail_pop_size;
+    // The number of items on top of the stack that need to *stay* on top of the
+    // stack. Variable captures go beneath these. All of them will be popped on
+    // failure.
+    Py_ssize_t on_top;
 } pattern_context;
 
 static int compiler_enter_scope(struct compiler *, identifier, int, void *, int);
@@ -1188,6 +1208,8 @@ stack_effect(int opcode, int oparg, int jump)
             return 1;
         case MATCH_KEYS:
             return 2;
+        case ROT_N:
+            return 0;
         default:
             return PY_INVALID_STACK_EFFECT;
     }
@@ -5594,11 +5616,15 @@ compiler_slice(struct compiler *c, expr_ty s)
 
 // PEP 634: Structural Pattern Matching
 
-// To keep things simple, all compiler_pattern_* routines follow the convention
-// of replacing TOS (the subject for the given pattern) with either True (match)
-// or False (no match). We do this even for irrefutable patterns; the idea is
-// that it's much easier to smooth out any redundant pushing, popping, and
-// jumping in the peephole optimizer than to detect or predict it here.
+// To keep things simple, all compiler_pattern_* and pattern_helper_* routines
+// follow the convention of consuming TOS (the subject for the given pattern)
+// and calling jump_to_fail_pop on failure (no match).
+
+// When calling into these routines, it's important that pc->on_top be kept
+// updated to reflect the current number of items that we are using on the top
+// of the stack: they will be popped on failure, and any name captures will be
+// stored *underneath* them on success. This lets us defer all names stores
+// until the *entire* pattern matches.
 
 #define WILDCARD_CHECK(N) \
     ((N)->kind == MatchAs_kind && !(N)->v.MatchAs.name)
@@ -5610,6 +5636,72 @@ compiler_slice(struct compiler *c, expr_ty s)
 #define MATCH_VALUE_EXPR(N) \
     ((N)->kind == Constant_kind || (N)->kind == Attribute_kind)
 
+// Allocate or resize pc->fail_pop to allow for n items to be popped on failure.
+static int
+ensure_fail_pop(struct compiler *c, pattern_context *pc, Py_ssize_t n)
+{
+    Py_ssize_t size = n + 1;
+    if (size <= pc->fail_pop_size) {
+        return 1;
+    }
+    Py_ssize_t needed = sizeof(basicblock*) * size;
+    basicblock **resized = PyObject_Realloc(pc->fail_pop, needed);
+    if (resized == NULL) {
+        PyErr_NoMemory();
+        return 0;
+    }
+    pc->fail_pop = resized;
+    while (pc->fail_pop_size < size) {
+        basicblock *new_block;
+        RETURN_IF_FALSE(new_block = compiler_new_block(c));
+        pc->fail_pop[pc->fail_pop_size++] = new_block;
+    }
+    return 1;
+}
+
+// Use op to jump to the correct fail_pop block.
+static int
+jump_to_fail_pop(struct compiler *c, pattern_context *pc, int op)
+{
+    // Pop any items on the top of the stack, plus any objects we were going to
+    // capture on success:
+    Py_ssize_t pops = pc->on_top + PyList_GET_SIZE(pc->stores);
+    RETURN_IF_FALSE(ensure_fail_pop(c, pc, pops));
+    ADDOP_JUMP(c, op, pc->fail_pop[pops]);
+    NEXT_BLOCK(c);
+    return 1;
+}
+
+// Build all of the fail_pop blocks and reset fail_pop.
+static int
+emit_and_reset_fail_pop(struct compiler *c, pattern_context *pc)
+{
+    if (!pc->fail_pop_size) {
+        assert(pc->fail_pop == NULL);
+        NEXT_BLOCK(c);
+        return 1;
+    }
+    while (--pc->fail_pop_size) {
+        compiler_use_next_block(c, pc->fail_pop[pc->fail_pop_size]);
+        if (!compiler_addop(c, POP_TOP)) {
+            pc->fail_pop_size = 0;
+            PyObject_Free(pc->fail_pop);
+            pc->fail_pop = NULL;
+            return 0;
+        }
+    }
+    compiler_use_next_block(c, pc->fail_pop[0]);
+    PyObject_Free(pc->fail_pop);
+    pc->fail_pop = NULL;
+    return 1;
+}
+
+static int
+compiler_error_duplicate_store(struct compiler *c, identifier n)
+{
+    return compiler_error(c, "multiple assignments to name %R in pattern", n);
+}
+
 static int
 pattern_helper_store_name(struct compiler *c, identifier n, pattern_context *pc)
 {
@@ -5621,22 +5713,16 @@ pattern_helper_store_name(struct compiler *c, identifier n, pattern_context *pc)
         return 0;
     }
     // Can't assign to the same name twice:
-    if (pc->stores == NULL) {
-        RETURN_IF_FALSE(pc->stores = PySet_New(NULL));
+    int duplicate = PySequence_Contains(pc->stores, n);
+    if (duplicate < 0) {
+        return 0;
     }
-    else {
-        int duplicate = PySet_Contains(pc->stores, n);
-        if (duplicate < 0) {
-            return 0;
-        }
-        if (duplicate) {
-            const char *e = "multiple assignments to name %R in pattern";
-            return compiler_error(c, e, n);
-        }
+    if (duplicate) {
+        return compiler_error_duplicate_store(c, n);
     }
-    RETURN_IF_FALSE(!PySet_Add(pc->stores, n));
-    RETURN_IF_FALSE(compiler_nameop(c, n, Store));
-    return 1;
+    // Rotate this object underneath any items we need to preserve:
+    ADDOP_I(c, ROT_N, pc->on_top + PyList_GET_SIZE(pc->stores) + 1);
+    return !PyList_Append(pc->stores, n);
 }
 
 
@@ -5672,65 +5758,17 @@ pattern_helper_sequence_unpack(struct compiler *c, asdl_pattern_seq *patterns,
                                Py_ssize_t star, pattern_context *pc)
 {
     RETURN_IF_FALSE(pattern_unpack_helper(c, patterns));
-    // We've now got a bunch of new subjects on the stack. If any of them fail
-    // to match, we need to pop everything else off, then finally push False.
-    // fails is an array of blocks that correspond to the necessary amount of
-    // popping for each element:
-    basicblock **fails;
     Py_ssize_t size = asdl_seq_LEN(patterns);
-    fails = (basicblock **)PyObject_Malloc(sizeof(basicblock*) * size);
-    if (fails == NULL) {
-        PyErr_NoMemory();
-        return 0;
-    }
-    // NOTE: Can't use our nice returning macros anymore: they'll leak memory!
-    // goto error on error.
+    // We've now got a bunch of new subjects on the stack. They need to remain
+    // there after each subpattern match:
+    pc->on_top += size;
     for (Py_ssize_t i = 0; i < size; i++) {
-        fails[i] = compiler_new_block(c);
-        if (fails[i] == NULL) {
-            goto error;
-        }
-    }
-    for (Py_ssize_t i = 0; i < size; i++) {
+        // One less item to keep track of each time we loop through:
+        pc->on_top--;
         pattern_ty pattern = asdl_seq_GET(patterns, i);
-        assert((i == star) == (pattern->kind == MatchStar_kind));
-        if (!compiler_pattern_subpattern(c, pattern, pc) ||
-            !compiler_addop_j(c, POP_JUMP_IF_FALSE, fails[i]) ||
-            compiler_next_block(c) == NULL)
-        {
-            goto error;
-        }
+        RETURN_IF_FALSE(compiler_pattern_subpattern(c, pattern, pc));
     }
-    // Success!
-    basicblock *end = compiler_new_block(c);
-    if (end == NULL ||
-        !compiler_addop_load_const(c, Py_True) ||
-        !compiler_addop_j(c, JUMP_FORWARD, end))
-    {
-        goto error;
-    }
-    // This is where we handle failed sub-patterns. For a sequence pattern like
-    // [a, b, c, d], this will look like:
-    // fails[0]: POP_TOP
-    // fails[1]: POP_TOP
-    // fails[2]: POP_TOP
-    // fails[3]: LOAD_CONST False
-    for (Py_ssize_t i = 0; i < size - 1; i++) {
-        compiler_use_next_block(c, fails[i]);
-        if (!compiler_addop(c, POP_TOP)) {
-            goto error;
-        }
-    }
-    compiler_use_next_block(c, fails[size - 1]);
-    if (!compiler_addop_load_const(c, Py_False)) {
-        goto error;
-    }
-    compiler_use_next_block(c, end);
-    PyObject_Free(fails);
     return 1;
-error:
-    PyObject_Free(fails);
-    return 0;
 }
 
 // Like pattern_helper_sequence_unpack, but uses BINARY_SUBSCR instead of
@@ -5740,9 +5778,8 @@ static int
 pattern_helper_sequence_subscr(struct compiler *c, asdl_pattern_seq *patterns,
                                Py_ssize_t star, pattern_context *pc)
 {
-    basicblock *end, *fail_pop_1;
-    RETURN_IF_FALSE(end = compiler_new_block(c));
-    RETURN_IF_FALSE(fail_pop_1 = compiler_new_block(c));
+    // We need to keep the subject around for extracting elements:
+    pc->on_top++;
     Py_ssize_t size = asdl_seq_LEN(patterns);
     for (Py_ssize_t i = 0; i < size; i++) {
         pattern_ty pattern = asdl_seq_GET(patterns, i);
@@ -5766,16 +5803,10 @@ pattern_helper_sequence_subscr(struct compiler *c, asdl_pattern_seq *patterns,
         }
         ADDOP(c, BINARY_SUBSCR);
         RETURN_IF_FALSE(compiler_pattern_subpattern(c, pattern, pc));
-        ADDOP_JUMP(c, POP_JUMP_IF_FALSE, fail_pop_1);
-        NEXT_BLOCK(c);
     }
+    // Pop the subject, we're done with it:
+    pc->on_top--;
     ADDOP(c, POP_TOP);
-    ADDOP_LOAD_CONST(c, Py_True);
-    ADDOP_JUMP(c, JUMP_FORWARD, end);
-    compiler_use_next_block(c, fail_pop_1);
-    ADDOP(c, POP_TOP);
-    ADDOP_LOAD_CONST(c, Py_False);
-    compiler_use_next_block(c, end);
     return 1;
 }
 
@@ -5804,26 +5835,15 @@ compiler_pattern_as(struct compiler *c, pattern_ty p, pattern_context *pc)
             const char *e = "wildcard makes remaining patterns unreachable";
             return compiler_error(c, e);
         }
-        RETURN_IF_FALSE(pattern_helper_store_name(c, p->v.MatchAs.name, pc));
-        ADDOP_LOAD_CONST(c, Py_True);
-        return 1;
+        return pattern_helper_store_name(c, p->v.MatchAs.name, pc);
     }
-    basicblock *end, *fail_pop_1;
-    RETURN_IF_FALSE(end = compiler_new_block(c));
-    RETURN_IF_FALSE(fail_pop_1 = compiler_new_block(c));
     // Need to make a copy for (possibly) storing later:
+    pc->on_top++;
     ADDOP(c, DUP_TOP);
     RETURN_IF_FALSE(compiler_pattern(c, p->v.MatchAs.pattern, pc));
-    ADDOP_JUMP(c, POP_JUMP_IF_FALSE, fail_pop_1);
-    NEXT_BLOCK(c);
+    // Success! Store it:
+    pc->on_top--;
     RETURN_IF_FALSE(pattern_helper_store_name(c, p->v.MatchAs.name, pc));
-    ADDOP_LOAD_CONST(c, Py_True);
-    ADDOP_JUMP(c, JUMP_FORWARD, end);
-    compiler_use_next_block(c, fail_pop_1);
-    // Need to pop that unused copy from before:
-    ADDOP(c, POP_TOP);
-    ADDOP_LOAD_CONST(c, Py_False);
-    compiler_use_next_block(c, end);
     return 1;
 }
 
@@ -5832,7 +5852,6 @@ compiler_pattern_star(struct compiler *c, pattern_ty p, pattern_context *pc)
 {
     assert(p->kind == MatchStar_kind);
     RETURN_IF_FALSE(pattern_helper_store_name(c, p->v.MatchStar.name, pc));
-    ADDOP_LOAD_CONST(c, Py_True);
     return 1;
 }
 
@@ -5884,9 +5903,6 @@ compiler_pattern_class(struct compiler *c, pattern_ty p, pattern_context *pc)
         RETURN_IF_FALSE(!validate_kwd_attrs(c, kwd_attrs, kwd_patterns));
         c->u->u_col_offset = p->col_offset; // validate_kwd_attrs moves this
     }
-    basicblock *end, *fail_pop_1;
-    RETURN_IF_FALSE(end = compiler_new_block(c));
-    RETURN_IF_FALSE(fail_pop_1 = compiler_new_block(c));
     VISIT(c, expr, p->v.MatchClass.cls);
     PyObject *attr_names;
     RETURN_IF_FALSE(attr_names = PyTuple_New(nattrs));
@@ -5898,9 +5914,9 @@ compiler_pattern_class(struct compiler *c, pattern_ty p, pattern_context *pc)
     }
     ADDOP_LOAD_CONST_NEW(c, attr_names);
     ADDOP_I(c, MATCH_CLASS, nargs);
-    ADDOP_JUMP(c, POP_JUMP_IF_FALSE, fail_pop_1);
-    NEXT_BLOCK(c);
-    // TOS is now a tuple of (nargs + nkwargs) attributes.
+    // TOS is now a tuple of (nargs + nattrs) attributes. Preserve it:
+    pc->on_top++;
+    RETURN_IF_FALSE(jump_to_fail_pop(c, pc, POP_JUMP_IF_FALSE));
     for (i = 0; i < nargs + nattrs; i++) {
         pattern_ty pattern;
         if (i < nargs) {
@@ -5919,17 +5935,10 @@ compiler_pattern_class(struct compiler *c, pattern_ty p, pattern_context *pc)
         ADDOP_LOAD_CONST_NEW(c, PyLong_FromSsize_t(i));
         ADDOP(c, BINARY_SUBSCR);
         RETURN_IF_FALSE(compiler_pattern_subpattern(c, pattern, pc));
-        ADDOP_JUMP(c, POP_JUMP_IF_FALSE, fail_pop_1);
-        NEXT_BLOCK(c);
     }
     // Success! Pop the tuple of attributes:
+    pc->on_top--;
     ADDOP(c, POP_TOP);
-    ADDOP_LOAD_CONST(c, Py_True);
-    ADDOP_JUMP(c, JUMP_FORWARD, end);
-    compiler_use_next_block(c, fail_pop_1);
-    ADDOP(c, POP_TOP);
-    ADDOP_LOAD_CONST(c, Py_False);
-    compiler_use_next_block(c, end);
     return 1;
 }
 
@@ -5937,10 +5946,6 @@ static int
 compiler_pattern_mapping(struct compiler *c, pattern_ty p, pattern_context *pc)
 {
     assert(p->kind == MatchMapping_kind);
-    basicblock *end, *fail_pop_1, *fail_pop_3;
-    RETURN_IF_FALSE(end = compiler_new_block(c));
-    RETURN_IF_FALSE(fail_pop_1 = compiler_new_block(c));
-    RETURN_IF_FALSE(fail_pop_3 = compiler_new_block(c));
     asdl_expr_seq *keys = p->v.MatchMapping.keys;
     asdl_pattern_seq *patterns = p->v.MatchMapping.patterns;
     Py_ssize_t size = asdl_seq_LEN(keys);
@@ -5953,18 +5958,14 @@ compiler_pattern_mapping(struct compiler *c, pattern_ty p, pattern_context *pc)
     }
     // We have a double-star target if "rest" is set
     PyObject *star_target = p->v.MatchMapping.rest;
+    // We need to keep the subject on top during the mapping and length checks:
+    pc->on_top++;
     ADDOP(c, MATCH_MAPPING);
-    ADDOP_JUMP(c, POP_JUMP_IF_FALSE, fail_pop_1);
-    NEXT_BLOCK(c);
+    RETURN_IF_FALSE(jump_to_fail_pop(c, pc, POP_JUMP_IF_FALSE));
     if (!size && !star_target) {
-        // If the pattern is just "{}", we're done!
+        // If the pattern is just "{}", we're done! Pop the subject:
+        pc->on_top--;
         ADDOP(c, POP_TOP);
-        ADDOP_LOAD_CONST(c, Py_True);
-        ADDOP_JUMP(c, JUMP_FORWARD, end);
-        compiler_use_next_block(c, fail_pop_1);
-        ADDOP(c, POP_TOP);
-        ADDOP_LOAD_CONST(c, Py_False);
-        compiler_use_next_block(c, end);
         return 1;
     }
     if (size) {
@@ -5972,8 +5973,7 @@ compiler_pattern_mapping(struct compiler *c, pattern_ty p, pattern_context *pc)
         ADDOP(c, GET_LEN);
         ADDOP_LOAD_CONST_NEW(c, PyLong_FromSsize_t(size));
         ADDOP_COMPARE(c, GtE);
-        ADDOP_JUMP(c, POP_JUMP_IF_FALSE, fail_pop_1);
-        NEXT_BLOCK(c);
+        RETURN_IF_FALSE(jump_to_fail_pop(c, pc, POP_JUMP_IF_FALSE));
     }
     if (INT_MAX < size - 1) {
         return compiler_error(c, "too many sub-patterns in mapping pattern");
@@ -5996,9 +5996,10 @@ compiler_pattern_mapping(struct compiler *c, pattern_ty p, pattern_context *pc)
     }
     ADDOP_I(c, BUILD_TUPLE, size);
     ADDOP(c, MATCH_KEYS);
-    ADDOP_JUMP(c, POP_JUMP_IF_FALSE, fail_pop_3);
-    NEXT_BLOCK(c);
-    // So far so good. There's now a tuple of values on the stack to match
+    // There's now a tuple of keys and a tuple of values on top of the subject:
+    pc->on_top += 2;
+    RETURN_IF_FALSE(jump_to_fail_pop(c, pc, POP_JUMP_IF_FALSE));
+    // So far so good. Use that tuple of values on the stack to match
     // sub-patterns against:
     for (Py_ssize_t i = 0; i < size; i++) {
         pattern_ty pattern = asdl_seq_GET(patterns, i);
@@ -6009,10 +6010,10 @@ compiler_pattern_mapping(struct compiler *c, pattern_ty p, pattern_context *pc)
         ADDOP_LOAD_CONST_NEW(c, PyLong_FromSsize_t(i));
         ADDOP(c, BINARY_SUBSCR);
         RETURN_IF_FALSE(compiler_pattern_subpattern(c, pattern, pc));
-        ADDOP_JUMP(c, POP_JUMP_IF_FALSE, fail_pop_3);
-        NEXT_BLOCK(c);
     }
-    // If we get this far, it's a match! We're done with that tuple of values.
+    // If we get this far, it's a match! We're done with the tuple of values,
+    // and whatever happens next should consume the tuple of keys underneath it:
+    pc->on_top -= 2;
     ADDOP(c, POP_TOP);
     if (star_target) {
         // If we have a starred name, bind a dict of remaining items to it:
@@ -6024,19 +6025,8 @@ compiler_pattern_mapping(struct compiler *c, pattern_ty p, pattern_context *pc)
         ADDOP(c, POP_TOP);
     }
     // Pop the subject:
+    pc->on_top--;
     ADDOP(c, POP_TOP);
-    ADDOP_LOAD_CONST(c, Py_True);
-    ADDOP_JUMP(c, JUMP_FORWARD, end);
-    // The top two items are a tuple of values or None, followed by a tuple of
-    // keys. Pop them both:
-    compiler_use_next_block(c, fail_pop_3);
-    ADDOP(c, POP_TOP);
-    ADDOP(c, POP_TOP);
-    compiler_use_next_block(c, fail_pop_1);
-    // Pop the subject:
-    ADDOP(c, POP_TOP);
-    ADDOP_LOAD_CONST(c, Py_False);
-    compiler_use_next_block(c, end);
     return 1;
 }
 
@@ -6044,69 +6034,148 @@ static int
 compiler_pattern_or(struct compiler *c, pattern_ty p, pattern_context *pc)
 {
     assert(p->kind == MatchOr_kind);
-    // control is the set of names bound by the first alternative. If all of the
-    // others bind the same names (they should), then this becomes pc->stores.
-    PyObject *control = NULL;
-    basicblock *end, *pass_pop_1;
+    basicblock *end;
     RETURN_IF_FALSE(end = compiler_new_block(c));
-    RETURN_IF_FALSE(pass_pop_1 = compiler_new_block(c));
     Py_ssize_t size = asdl_seq_LEN(p->v.MatchOr.patterns);
     assert(size > 1);
     // We're going to be messing with pc. Keep the original info handy:
-    PyObject *stores_init = pc->stores;
-    int allow_irrefutable = pc->allow_irrefutable;
+    pattern_context old_pc = *pc;
+    Py_INCREF(pc->stores);
+    // control is the list of names bound by the first alternative. It is used
+    // for checking different name bindings in alternatives, and for correcting
+    // the order in which extracted elements are placed on the stack.
+    PyObject *control = NULL;
+    // NOTE: We can't use returning macros anymore! goto error on error.
     for (Py_ssize_t i = 0; i < size; i++) {
-        // NOTE: Can't use our nice returning macros in here: they'll leak sets!
         pattern_ty alt = asdl_seq_GET(p->v.MatchOr.patterns, i);
-        pc->stores = PySet_New(stores_init);
-        // An irrefutable sub-pattern must be last, if it is allowed at all:
-        int is_last = i == size - 1;
-        pc->allow_irrefutable = allow_irrefutable && is_last;
         SET_LOC(c, alt);
-        if (pc->stores == NULL ||
-            // Only copy the subject if we're *not* on the last alternative:
-            (!is_last && !compiler_addop(c, DUP_TOP)) ||
-            !compiler_pattern(c, alt, pc) ||
-            // Only jump if we're *not* on the last alternative:
-            (!is_last && !compiler_addop_j(c, POP_JUMP_IF_TRUE, pass_pop_1)) ||
-            !compiler_next_block(c))
-        {
-            goto fail;
+        PyObject *pc_stores = PyList_New(0);
+        if (pc_stores == NULL) {
+            goto error;
         }
+        Py_SETREF(pc->stores, pc_stores);
+        // An irrefutable sub-pattern must be last, if it is allowed at all:
+        pc->allow_irrefutable = (i == size - 1) && old_pc.allow_irrefutable;
+        pc->fail_pop = NULL;
+        pc->fail_pop_size = 0;
+        pc->on_top = 0;
+        if (!compiler_addop(c, DUP_TOP) || !compiler_pattern(c, alt, pc)) {
+            goto error;
+        }
+        // Success!
+        Py_ssize_t nstores = PyList_GET_SIZE(pc->stores);
         if (!i) {
-            // If this is the first alternative, save its stores as a "control"
-            // for the others (they can't bind a different set of names):
+            // This is the first alternative, so save its stores as a "control"
+            // for the others (they can't bind a different set of names, and
+            // might need to be reordered):
+            assert(control == NULL);
             control = pc->stores;
-            continue;
+            Py_INCREF(control);
         }
-        if (PySet_GET_SIZE(pc->stores) || PySet_GET_SIZE(control)) {
-            // Otherwise, check to see if we differ from the control set:
-            PyObject *diff = PyNumber_InPlaceXor(pc->stores, control);
-            if (diff == NULL) {
-                goto fail;
-            }
-            if (PySet_GET_SIZE(diff)) {
-                // The names differ! Raise.
-                Py_DECREF(diff);
-                compiler_error(c, "alternative patterns bind different names");
-                goto fail;
-            }
-            Py_DECREF(diff);
+        else if (nstores != PyList_GET_SIZE(control)) {
+            goto diff;
         }
-        Py_DECREF(pc->stores);
+        else if (nstores) {
+            // There were captures. Check to see if we differ from control:
+            Py_ssize_t icontrol = nstores;
+            while (icontrol--) {
+                PyObject *name = PyList_GET_ITEM(control, icontrol);
+                Py_ssize_t istores = PySequence_Index(pc->stores, name);
+                if (istores < 0) {
+                    PyErr_Clear();
+                    goto diff;
+                }
+                if (icontrol != istores) {
+                    // Reorder the names on the stack to match the order of the
+                    // names in control. There's probably a better way of doing
+                    // this; the current solution is potentially very
+                    // inefficient when each alternative subpattern binds lots
+                    // of names in different orders. It's fine for reasonable
+                    // cases, though.
+                    assert(istores < icontrol);
+                    Py_ssize_t rotations = istores + 1;
+                    // Perfom the same rotation on pc->stores:
+                    PyObject *rotated = PyList_GetSlice(pc->stores, 0,
+                                                        rotations);
+                    if (rotated == NULL ||
+                        PyList_SetSlice(pc->stores, 0, rotations, NULL) ||
+                        PyList_SetSlice(pc->stores, icontrol - istores,
+                                        icontrol - istores, rotated))
+                    {
+                        Py_XDECREF(rotated);
+                        goto error;
+                    }
+                    Py_DECREF(rotated);
+                    // That just did:
+                    // rotated = pc_stores[:rotations]
+                    // del pc_stores[:rotations]
+                    // pc_stores[icontrol-istores:icontrol-istores] = rotated
+                    // Do the same thing to the stack, using several ROT_Ns:
+                    while (rotations--) {
+                        if (!compiler_addop_i(c, ROT_N, icontrol + 1)) {
+                            goto error;
+                        }
+                    }
+                }
+            }
+        }
+        assert(control);
+        if (!compiler_addop_j(c, JUMP_FORWARD, end) ||
+            !compiler_next_block(c) ||
+            !emit_and_reset_fail_pop(c, pc))
+        {
+            goto error;
+        }
     }
-    Py_XDECREF(stores_init);
-    // Update pc->stores and restore pc->allow_irrefutable:
-    pc->stores = control;
-    pc->allow_irrefutable = allow_irrefutable;
-    ADDOP_JUMP(c, JUMP_FORWARD, end);
-    compiler_use_next_block(c, pass_pop_1);
-    ADDOP(c, POP_TOP);
-    ADDOP_LOAD_CONST(c, Py_True);
+    Py_DECREF(pc->stores);
+    *pc = old_pc;
+    Py_INCREF(pc->stores);
+    // Need to NULL this for the PyObject_Free call in the error block.
+    old_pc.fail_pop = NULL;
+    // No match. Pop the remaining copy of the subject and fail:
+    if (!compiler_addop(c, POP_TOP) || !jump_to_fail_pop(c, pc, JUMP_FORWARD)) {
+        goto error;
+    }
     compiler_use_next_block(c, end);
+    Py_ssize_t nstores = PyList_GET_SIZE(control);
+    // There's a bunch of stuff on the stack between any where the new stores
+    // are and where they need to be:
+    // - The other stores.
+    // - A copy of the subject.
+    // - Anything else that may be on top of the stack.
+    // - Any previous stores we've already stashed away on the stack.
+    int nrots = nstores + 1 + pc->on_top + PyList_GET_SIZE(pc->stores);
+    for (Py_ssize_t i = 0; i < nstores; i++) {
+        // Rotate this capture to its proper place on the stack:
+        if (!compiler_addop_i(c, ROT_N, nrots)) {
+            goto error;
+        }
+        // Update the list of previous stores with this new name, checking for
+        // duplicates:
+        PyObject *name = PyList_GET_ITEM(control, i);
+        int dupe = PySequence_Contains(pc->stores, name);
+        if (dupe < 0) {
+            goto error;
+        }
+        if (dupe) {
+            compiler_error_duplicate_store(c, name);
+            goto error;
+        }
+        if (PyList_Append(pc->stores, name)) {
+            goto error;
+        }
+    }
+    Py_DECREF(old_pc.stores);
+    Py_DECREF(control);
+    // NOTE: Returning macros are safe again.
+    // Pop the copy of the subject:
+    ADDOP(c, POP_TOP);
     return 1;
-fail:
-    Py_XDECREF(stores_init);
+diff:
+    compiler_error(c, "alternative patterns bind different names");
+error:
+    PyObject_Free(old_pc.fail_pop);
+    Py_DECREF(old_pc.stores);
     Py_XDECREF(control);
     return 0;
 }
@@ -6136,32 +6205,29 @@ compiler_pattern_sequence(struct compiler *c, pattern_ty p, pattern_context *pc)
         }
         only_wildcard &= WILDCARD_CHECK(pattern);
     }
-    basicblock *end, *fail_pop_1;
-    RETURN_IF_FALSE(end = compiler_new_block(c));
-    RETURN_IF_FALSE(fail_pop_1 = compiler_new_block(c));
+    // We need to keep the subject on top during the sequence and length checks:
+    pc->on_top++;
     ADDOP(c, MATCH_SEQUENCE);
-    ADDOP_JUMP(c, POP_JUMP_IF_FALSE, fail_pop_1);
-    NEXT_BLOCK(c);
+    RETURN_IF_FALSE(jump_to_fail_pop(c, pc, POP_JUMP_IF_FALSE));
     if (star < 0) {
         // No star: len(subject) == size
         ADDOP(c, GET_LEN);
         ADDOP_LOAD_CONST_NEW(c, PyLong_FromSsize_t(size));
         ADDOP_COMPARE(c, Eq);
-        ADDOP_JUMP(c, POP_JUMP_IF_FALSE, fail_pop_1);
-        NEXT_BLOCK(c);
+        RETURN_IF_FALSE(jump_to_fail_pop(c, pc, POP_JUMP_IF_FALSE));
     }
     else if (size > 1) {
         // Star: len(subject) >= size - 1
         ADDOP(c, GET_LEN);
         ADDOP_LOAD_CONST_NEW(c, PyLong_FromSsize_t(size - 1));
         ADDOP_COMPARE(c, GtE);
-        ADDOP_JUMP(c, POP_JUMP_IF_FALSE, fail_pop_1);
-        NEXT_BLOCK(c);
+        RETURN_IF_FALSE(jump_to_fail_pop(c, pc, POP_JUMP_IF_FALSE));
     }
+    // Whatever comes next should consume the subject:
+    pc->on_top--;
     if (only_wildcard) {
         // Patterns like: [] / [_] / [_, _] / [*_] / [_, *_] / [_, _, *_] / etc.
         ADDOP(c, POP_TOP);
-        ADDOP_LOAD_CONST(c, Py_True);
     }
     else if (star_wildcard) {
         RETURN_IF_FALSE(pattern_helper_sequence_subscr(c, patterns, star, pc));
@@ -6169,11 +6235,6 @@ compiler_pattern_sequence(struct compiler *c, pattern_ty p, pattern_context *pc)
     else {
         RETURN_IF_FALSE(pattern_helper_sequence_unpack(c, patterns, star, pc));
     }
-    ADDOP_JUMP(c, JUMP_FORWARD, end);
-    compiler_use_next_block(c, fail_pop_1);
-    ADDOP(c, POP_TOP)
-    ADDOP_LOAD_CONST(c, Py_False);
-    compiler_use_next_block(c, end);
     return 1;
 }
 
@@ -6188,6 +6249,7 @@ compiler_pattern_value(struct compiler *c, pattern_ty p, pattern_context *pc)
     }
     VISIT(c, expr, value);
     ADDOP_COMPARE(c, Eq);
+    RETURN_IF_FALSE(jump_to_fail_pop(c, pc, POP_JUMP_IF_FALSE));
     return 1;
 }
 
@@ -6197,6 +6259,7 @@ compiler_pattern_singleton(struct compiler *c, pattern_ty p, pattern_context *pc
     assert(p->kind == MatchSingleton_kind);
     ADDOP_LOAD_CONST(c, p->v.MatchSingleton.value);
     ADDOP_COMPARE(c, Is);
+    RETURN_IF_FALSE(jump_to_fail_pop(c, pc, POP_JUMP_IF_FALSE));
     return 1;
 }
 
@@ -6229,39 +6292,48 @@ compiler_pattern(struct compiler *c, pattern_ty p, pattern_context *pc)
 }
 
 static int
-compiler_match(struct compiler *c, stmt_ty s)
+compiler_match_inner(struct compiler *c, stmt_ty s, pattern_context *pc)
 {
     VISIT(c, expr, s->v.Match.subject);
-    basicblock *next, *end;
+    basicblock *end;
     RETURN_IF_FALSE(end = compiler_new_block(c));
     Py_ssize_t cases = asdl_seq_LEN(s->v.Match.cases);
     assert(cases > 0);
-    pattern_context pc;
-    // We use pc.stores to track:
-    // - Repeated name assignments in the same pattern.
-    // - Different name assignments in alternatives.
-    // It's a set of names, but we don't create it until it's needed:
-    pc.stores = NULL;
     match_case_ty m = asdl_seq_GET(s->v.Match.cases, cases - 1);
     int has_default = WILDCARD_CHECK(m->pattern) && 1 < cases;
     for (Py_ssize_t i = 0; i < cases - has_default; i++) {
         m = asdl_seq_GET(s->v.Match.cases, i);
         SET_LOC(c, m->pattern);
-        RETURN_IF_FALSE(next = compiler_new_block(c));
-        // If pc.allow_irrefutable is 0, any name captures against our subject
-        // will raise. Irrefutable cases must be either guarded, last, or both:
-        pc.allow_irrefutable = m->guard != NULL || i == cases - 1;
         // Only copy the subject if we're *not* on the last case:
         if (i != cases - has_default - 1) {
             ADDOP(c, DUP_TOP);
         }
-        int result = compiler_pattern(c, m->pattern, &pc);
-        Py_CLEAR(pc.stores);
-        RETURN_IF_FALSE(result);
-        ADDOP_JUMP(c, POP_JUMP_IF_FALSE, next);
-        NEXT_BLOCK(c);
+        RETURN_IF_FALSE(pc->stores = PyList_New(0));
+        // Irrefutable cases must be either guarded, last, or both:
+        pc->allow_irrefutable = m->guard != NULL || i == cases - 1;
+        pc->fail_pop = NULL;
+        pc->fail_pop_size = 0;
+        pc->on_top = 0;
+        // NOTE: Can't use returning macros here (they'll leak pc->stores)!
+        if (!compiler_pattern(c, m->pattern, pc)) {
+            Py_DECREF(pc->stores);
+            return 0;
+        }
+        assert(!pc->on_top);
+        // It's a match! Store all of the captured names (they're on the stack).
+        Py_ssize_t nstores = PyList_GET_SIZE(pc->stores);
+        for (Py_ssize_t n = 0; n < nstores; n++) {
+            PyObject *name = PyList_GET_ITEM(pc->stores, n);
+            if (!compiler_nameop(c, name, Store)) {
+                Py_DECREF(pc->stores);
+                return 0;
+            }
+        }
+        Py_DECREF(pc->stores);
+        // NOTE: Returning macros are safe again.
         if (m->guard) {
-            RETURN_IF_FALSE(compiler_jump_if(c, m->guard, next, 0));
+            RETURN_IF_FALSE(ensure_fail_pop(c, pc, 0));
+            RETURN_IF_FALSE(compiler_jump_if(c, m->guard, pc->fail_pop[0], 0));
         }
         // Success! Pop the subject off, we're done with it:
         if (i != cases - has_default - 1) {
@@ -6269,7 +6341,7 @@ compiler_match(struct compiler *c, stmt_ty s)
         }
         VISIT_SEQ(c, stmt, m->body);
         ADDOP_JUMP(c, JUMP_FORWARD, end);
-        compiler_use_next_block(c, next);
+        RETURN_IF_FALSE(emit_and_reset_fail_pop(c, pc));
     }
     if (has_default) {
         if (cases == 1) {
@@ -6289,6 +6361,16 @@ compiler_match(struct compiler *c, stmt_ty s)
     return 1;
 }
 
+static int
+compiler_match(struct compiler *c, stmt_ty s)
+{
+    pattern_context pc;
+    pc.fail_pop = NULL;
+    int result = compiler_match_inner(c, s, &pc);
+    PyObject_Free(pc.fail_pop);
+    return result;
+}
+
 #undef WILDCARD_CHECK
 #undef WILDCARD_STAR_CHECK
 
@@ -7031,6 +7113,38 @@ fold_tuple_on_constants(struct compiler *c,
 }
 
 
+// Eliminate n * ROT_N(n).
+static void
+fold_rotations(struct instr *inst, int n)
+{
+    for (int i = 0; i < n; i++) {
+        int rot;
+        switch (inst[i].i_opcode) {
+            case ROT_N:
+                rot = inst[i].i_oparg;
+                break;
+            case ROT_FOUR:
+                rot = 4;
+                break;
+            case ROT_THREE:
+                rot = 3;
+                break;
+            case ROT_TWO:
+                rot = 2;
+                break;
+            default:
+                return;
+        }
+        if (rot != n) {
+            return;
+        }
+    }
+    for (int i = 0; i < n; i++) {
+        inst[i].i_opcode = NOP;
+    }
+}
+
+
 static int
 eliminate_jump_to_jump(basicblock *bb, int opcode) {
     assert (bb->b_iused > 0);
@@ -7273,6 +7387,27 @@ optimize_basic_block(struct compiler *c, basicblock *bb, PyObject *consts)
                             bb->b_exit = 1;
                         }
                 }
+                break;
+            case ROT_N:
+                switch (oparg) {
+                    case 0:
+                    case 1:
+                        inst->i_opcode = NOP;
+                        continue;
+                    case 2:
+                        inst->i_opcode = ROT_TWO;
+                        break;
+                    case 3:
+                        inst->i_opcode = ROT_THREE;
+                        break;
+                    case 4:
+                        inst->i_opcode = ROT_FOUR;
+                        break;
+                }
+                if (i >= oparg - 1) {
+                    fold_rotations(inst - oparg + 1, oparg);
+                }
+                break;
         }
     }
     return 0;
diff --git a/Python/importlib_external.h b/Python/importlib_external.h
index 6b9bd0d..8f4eeb0 100644
--- a/Python/importlib_external.h
+++ b/Python/importlib_external.h
@@ -357,7 +357,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,0,115,36,0,0,0,16,5,6,1,22,1,4,255,
     2,2,14,3,12,1,28,255,18,2,12,1,2,1,12,1,
     2,3,12,254,2,1,2,1,2,254,2,253,114,95,0,0,
-    0,105,110,13,0,0,114,44,0,0,0,114,32,0,0,0,
+    0,105,111,13,0,0,114,44,0,0,0,114,32,0,0,0,
     115,2,0,0,0,13,10,90,11,95,95,112,121,99,97,99,
     104,101,95,95,122,4,111,112,116,45,122,3,46,112,121,122,
     4,46,112,121,119,122,4,46,112,121,99,41,1,218,12,111,
@@ -471,7 +471,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     108,109,111,115,116,95,102,105,108,101,110,97,109,101,218,8,
     102,105,108,101,110,97,109,101,114,7,0,0,0,114,7,0,
     0,0,114,8,0,0,0,218,17,99,97,99,104,101,95,102,
-    114,111,109,95,115,111,117,114,99,101,123,1,0,0,115,72,
+    114,111,109,95,115,111,117,114,99,101,124,1,0,0,115,72,
     0,0,0,8,18,6,1,2,1,4,255,8,2,4,1,8,
     1,12,1,10,1,12,1,16,1,8,1,8,1,8,1,24,
     1,8,1,12,1,6,1,8,2,8,1,8,1,8,1,14,
@@ -552,7 +552,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     116,95,108,101,118,101,108,90,13,98,97,115,101,95,102,105,
     108,101,110,97,109,101,114,7,0,0,0,114,7,0,0,0,
     114,8,0,0,0,218,17,115,111,117,114,99,101,95,102,114,
-    111,109,95,99,97,99,104,101,194,1,0,0,115,60,0,0,
+    111,109,95,99,97,99,104,101,195,1,0,0,115,60,0,0,
     0,12,9,8,1,10,1,12,1,4,1,10,1,12,1,14,
     1,16,1,4,1,4,1,12,1,8,1,8,1,2,1,8,
     255,10,2,8,1,14,1,8,1,16,1,10,1,4,1,2,
@@ -587,7 +587,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     218,1,95,90,9,101,120,116,101,110,115,105,111,110,218,11,
     115,111,117,114,99,101,95,112,97,116,104,114,7,0,0,0,
     114,7,0,0,0,114,8,0,0,0,218,15,95,103,101,116,
-    95,115,111,117,114,99,101,102,105,108,101,234,1,0,0,115,
+    95,115,111,117,114,99,101,102,105,108,101,235,1,0,0,115,
     22,0,0,0,12,7,4,1,16,1,24,1,4,1,2,1,
     12,1,16,1,14,1,16,1,2,254,114,135,0,0,0,99,
     1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
@@ -600,7 +600,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     117,112,108,101,114,127,0,0,0,114,121,0,0,0,114,107,
     0,0,0,114,113,0,0,0,41,1,114,120,0,0,0,114,
     7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,
-    95,103,101,116,95,99,97,99,104,101,100,253,1,0,0,115,
+    95,103,101,116,95,99,97,99,104,101,100,254,1,0,0,115,
     18,0,0,0,14,1,2,1,10,1,12,1,6,1,14,1,
     4,1,4,2,2,251,114,137,0,0,0,99,1,0,0,0,
     0,0,0,0,0,0,0,0,2,0,0,0,8,0,0,0,
@@ -615,7 +615,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,114,77,0,0,0,114,76,0,0,0,41,2,114,65,
     0,0,0,114,78,0,0,0,114,7,0,0,0,114,7,0,
     0,0,114,8,0,0,0,218,10,95,99,97,108,99,95,109,
-    111,100,101,9,2,0,0,115,14,0,0,0,2,2,14,1,
+    111,100,101,10,2,0,0,115,14,0,0,0,2,2,14,1,
     12,1,6,1,8,3,4,1,2,251,114,139,0,0,0,99,
     1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
     4,0,0,0,3,0,0,0,115,52,0,0,0,100,6,135,
@@ -652,7 +652,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     141,0,0,0,218,4,97,114,103,115,218,6,107,119,97,114,
     103,115,169,1,218,6,109,101,116,104,111,100,114,7,0,0,
     0,114,8,0,0,0,218,19,95,99,104,101,99,107,95,110,
-    97,109,101,95,119,114,97,112,112,101,114,29,2,0,0,115,
+    97,109,101,95,119,114,97,112,112,101,114,30,2,0,0,115,
     18,0,0,0,8,1,8,1,10,1,4,1,8,1,2,255,
     2,1,6,255,24,2,122,40,95,99,104,101,99,107,95,110,
     97,109,101,46,60,108,111,99,97,108,115,62,46,95,99,104,
@@ -670,7 +670,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     116,97,116,116,114,218,8,95,95,100,105,99,116,95,95,218,
     6,117,112,100,97,116,101,41,3,90,3,110,101,119,90,3,
     111,108,100,114,85,0,0,0,114,7,0,0,0,114,7,0,
-    0,0,114,8,0,0,0,218,5,95,119,114,97,112,42,2,
+    0,0,114,8,0,0,0,218,5,95,119,114,97,112,43,2,
     0,0,115,10,0,0,0,8,1,10,1,18,1,2,128,18,
     1,122,26,95,99,104,101,99,107,95,110,97,109,101,46,60,
     108,111,99,97,108,115,62,46,95,119,114,97,112,114,69,0,
@@ -678,7 +678,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     114,158,0,0,0,41,3,114,147,0,0,0,114,148,0,0,
     0,114,158,0,0,0,114,7,0,0,0,114,146,0,0,0,
     114,8,0,0,0,218,11,95,99,104,101,99,107,95,110,97,
-    109,101,21,2,0,0,115,12,0,0,0,14,8,8,10,8,
+    109,101,22,2,0,0,115,12,0,0,0,14,8,8,10,8,
     1,8,2,10,6,4,1,114,160,0,0,0,99,2,0,0,
     0,0,0,0,0,0,0,0,0,5,0,0,0,6,0,0,
     0,67,0,0,0,115,72,0,0,0,116,0,160,1,100,1,
@@ -713,7 +713,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     114,218,8,112,111,114,116,105,111,110,115,218,3,109,115,103,
     114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,
     17,95,102,105,110,100,95,109,111,100,117,108,101,95,115,104,
-    105,109,52,2,0,0,115,16,0,0,0,6,7,2,2,4,
+    105,109,53,2,0,0,115,16,0,0,0,6,7,2,2,4,
     254,14,6,16,1,4,1,22,1,4,1,114,167,0,0,0,
     99,3,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
     0,4,0,0,0,67,0,0,0,115,166,0,0,0,124,0,
@@ -780,7 +780,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     101,120,99,95,100,101,116,97,105,108,115,90,5,109,97,103,
     105,99,114,117,0,0,0,114,16,0,0,0,114,7,0,0,
     0,114,7,0,0,0,114,8,0,0,0,218,13,95,99,108,
-    97,115,115,105,102,121,95,112,121,99,72,2,0,0,115,28,
+    97,115,115,105,102,121,95,112,121,99,73,2,0,0,115,28,
     0,0,0,12,16,8,1,16,1,12,1,16,1,12,1,10,
     1,12,1,8,1,16,1,8,2,16,1,16,1,4,1,114,
     176,0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,
@@ -835,7 +835,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     101,95,115,105,122,101,114,141,0,0,0,114,175,0,0,0,
     114,117,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
     8,0,0,0,218,23,95,118,97,108,105,100,97,116,101,95,
-    116,105,109,101,115,116,97,109,112,95,112,121,99,105,2,0,
+    116,105,109,101,115,116,97,109,112,95,112,121,99,106,2,0,
     0,115,18,0,0,0,24,19,10,1,12,1,16,1,8,1,
     22,1,2,255,22,2,8,254,114,180,0,0,0,99,4,0,
     0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,
@@ -882,7 +882,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     95,104,97,115,104,114,141,0,0,0,114,175,0,0,0,114,
     7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,18,
     95,118,97,108,105,100,97,116,101,95,104,97,115,104,95,112,
-    121,99,133,2,0,0,115,14,0,0,0,16,17,2,1,8,
+    121,99,134,2,0,0,115,14,0,0,0,16,17,2,1,8,
     1,4,255,2,2,6,254,4,255,114,182,0,0,0,99,4,
     0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,
     0,0,0,67,0,0,0,115,76,0,0,0,116,0,160,1,
@@ -906,7 +906,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,0,114,134,0,0,0,218,4,99,111,100,101,114,7,
     0,0,0,114,7,0,0,0,114,8,0,0,0,218,17,95,
     99,111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,
-    157,2,0,0,115,18,0,0,0,10,2,10,1,12,1,8,
+    158,2,0,0,115,18,0,0,0,10,2,10,1,12,1,8,
     1,12,1,4,1,10,2,4,1,6,255,114,189,0,0,0,
     99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
     0,5,0,0,0,67,0,0,0,115,70,0,0,0,116,0,
@@ -924,7 +924,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     109,101,114,179,0,0,0,114,41,0,0,0,114,7,0,0,
     0,114,7,0,0,0,114,8,0,0,0,218,22,95,99,111,
     100,101,95,116,111,95,116,105,109,101,115,116,97,109,112,95,
-    112,121,99,170,2,0,0,115,12,0,0,0,8,2,14,1,
+    112,121,99,171,2,0,0,115,12,0,0,0,8,2,14,1,
     14,1,14,1,16,1,4,1,114,194,0,0,0,84,99,3,
     0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,
     0,0,0,67,0,0,0,115,80,0,0,0,116,0,116,1,
@@ -942,7 +942,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,90,7,99,104,101,99,107,101,100,114,41,0,0,0,
     114,16,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
     8,0,0,0,218,17,95,99,111,100,101,95,116,111,95,104,
-    97,115,104,95,112,121,99,180,2,0,0,115,14,0,0,0,
+    97,115,104,95,112,121,99,181,2,0,0,115,14,0,0,0,
     8,2,12,1,14,1,16,1,10,1,16,1,4,1,114,195,
     0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
     5,0,0,0,6,0,0,0,67,0,0,0,115,62,0,0,
@@ -970,7 +970,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     103,90,15,110,101,119,108,105,110,101,95,100,101,99,111,100,
     101,114,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
     0,218,13,100,101,99,111,100,101,95,115,111,117,114,99,101,
-    191,2,0,0,115,10,0,0,0,8,5,12,1,10,1,12,
+    192,2,0,0,115,10,0,0,0,8,5,12,1,10,1,12,
     1,20,1,114,200,0,0,0,169,2,114,164,0,0,0,218,
     26,115,117,98,109,111,100,117,108,101,95,115,101,97,114,99,
     104,95,108,111,99,97,116,105,111,110,115,99,2,0,0,0,
@@ -1035,7 +1035,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     7,100,105,114,110,97,109,101,114,7,0,0,0,114,7,0,
     0,0,114,8,0,0,0,218,23,115,112,101,99,95,102,114,
     111,109,95,102,105,108,101,95,108,111,99,97,116,105,111,110,
-    208,2,0,0,115,84,0,0,0,8,12,4,4,10,1,2,
+    209,2,0,0,115,84,0,0,0,8,12,4,4,10,1,2,
     2,14,1,12,1,4,1,2,251,10,7,8,1,2,1,18,
     1,12,1,2,1,16,8,6,1,8,3,14,1,14,1,10,
     1,6,1,4,1,2,253,4,5,8,3,10,2,2,1,14,
@@ -1074,7 +1074,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     76,79,67,65,76,95,77,65,67,72,73,78,69,114,19,0,
     0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
     0,218,14,95,111,112,101,110,95,114,101,103,105,115,116,114,
-    121,37,3,0,0,115,10,0,0,0,2,2,16,1,12,1,
+    121,38,3,0,0,115,10,0,0,0,2,2,16,1,12,1,
     18,1,2,255,122,36,87,105,110,100,111,119,115,82,101,103,
     105,115,116,114,121,70,105,110,100,101,114,46,95,111,112,101,
     110,95,114,101,103,105,115,116,114,121,99,2,0,0,0,0,
@@ -1101,7 +1101,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     114,20,0,0,0,90,4,104,107,101,121,218,8,102,105,108,
     101,112,97,116,104,114,7,0,0,0,114,7,0,0,0,114,
     8,0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,
-    103,105,115,116,114,121,44,3,0,0,115,30,0,0,0,6,
+    103,105,115,116,114,121,45,3,0,0,115,30,0,0,0,6,
     2,8,1,6,2,6,1,16,1,6,255,2,2,12,1,14,
     1,28,255,2,128,4,4,12,254,6,1,2,255,122,38,87,
     105,110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,
@@ -1124,7 +1124,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     114,103,101,116,114,222,0,0,0,114,164,0,0,0,114,212,
     0,0,0,114,210,0,0,0,114,7,0,0,0,114,7,0,
     0,0,114,8,0,0,0,218,9,102,105,110,100,95,115,112,
-    101,99,59,3,0,0,115,34,0,0,0,10,2,8,1,4,
+    101,99,60,3,0,0,115,34,0,0,0,10,2,8,1,4,
     1,2,1,12,1,12,1,6,1,14,1,14,1,6,1,8,
     1,2,1,6,254,8,3,2,252,4,255,2,254,122,31,87,
     105,110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,
@@ -1152,7 +1152,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,169,4,114,221,0,0,0,114,163,0,0,0,114,65,
     0,0,0,114,210,0,0,0,114,7,0,0,0,114,7,0,
     0,0,114,8,0,0,0,218,11,102,105,110,100,95,109,111,
-    100,117,108,101,75,3,0,0,115,14,0,0,0,6,7,2,
+    100,117,108,101,76,3,0,0,115,14,0,0,0,6,7,2,
     2,4,254,12,3,8,1,6,1,4,2,122,33,87,105,110,
     100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,
     101,114,46,102,105,110,100,95,109,111,100,117,108,101,169,2,
@@ -1165,7 +1165,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     218,11,99,108,97,115,115,109,101,116,104,111,100,114,223,0,
     0,0,114,226,0,0,0,114,229,0,0,0,114,7,0,0,
     0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
-    114,214,0,0,0,25,3,0,0,115,30,0,0,0,8,0,
+    114,214,0,0,0,26,3,0,0,115,30,0,0,0,8,0,
     4,2,2,3,2,255,2,4,2,255,12,3,2,2,10,1,
     2,6,10,1,2,14,12,1,2,15,16,1,114,214,0,0,
     0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -1201,7 +1201,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     114,163,0,0,0,114,120,0,0,0,90,13,102,105,108,101,
     110,97,109,101,95,98,97,115,101,90,9,116,97,105,108,95,
     110,97,109,101,114,7,0,0,0,114,7,0,0,0,114,8,
-    0,0,0,114,206,0,0,0,97,3,0,0,115,8,0,0,
+    0,0,0,114,206,0,0,0,98,3,0,0,115,8,0,0,
     0,18,3,16,1,14,1,16,1,122,24,95,76,111,97,100,
     101,114,66,97,115,105,99,115,46,105,115,95,112,97,99,107,
     97,103,101,99,2,0,0,0,0,0,0,0,0,0,0,0,
@@ -1211,7 +1211,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     111,100,117,108,101,32,99,114,101,97,116,105,111,110,46,78,
     114,7,0,0,0,169,2,114,143,0,0,0,114,210,0,0,
     0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
-    218,13,99,114,101,97,116,101,95,109,111,100,117,108,101,105,
+    218,13,99,114,101,97,116,101,95,109,111,100,117,108,101,106,
     3,0,0,243,2,0,0,0,4,0,122,27,95,76,111,97,
     100,101,114,66,97,115,105,99,115,46,99,114,101,97,116,101,
     95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,
@@ -1232,7 +1232,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,41,3,114,143,0,0,0,218,6,109,111,100,117,108,101,
     114,188,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
     8,0,0,0,218,11,101,120,101,99,95,109,111,100,117,108,
-    101,108,3,0,0,115,12,0,0,0,12,2,8,1,4,1,
+    101,109,3,0,0,115,12,0,0,0,12,2,8,1,4,1,
     8,1,4,255,20,2,122,25,95,76,111,97,100,101,114,66,
     97,115,105,99,115,46,101,120,101,99,95,109,111,100,117,108,
     101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,
@@ -1243,14 +1243,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,218,17,95,108,111,97,100,95,109,111,100,117,108,101,95,
     115,104,105,109,169,2,114,143,0,0,0,114,163,0,0,0,
     114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,
-    11,108,111,97,100,95,109,111,100,117,108,101,116,3,0,0,
+    11,108,111,97,100,95,109,111,100,117,108,101,117,3,0,0,
     115,2,0,0,0,12,3,122,25,95,76,111,97,100,101,114,
     66,97,115,105,99,115,46,108,111,97,100,95,109,111,100,117,
     108,101,78,41,8,114,150,0,0,0,114,149,0,0,0,114,
     151,0,0,0,114,152,0,0,0,114,206,0,0,0,114,239,
     0,0,0,114,245,0,0,0,114,248,0,0,0,114,7,0,
     0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
-    0,114,235,0,0,0,92,3,0,0,115,12,0,0,0,8,
+    0,114,235,0,0,0,93,3,0,0,115,12,0,0,0,8,
     0,4,2,8,3,8,8,8,3,12,8,114,235,0,0,0,
     99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
     0,3,0,0,0,64,0,0,0,115,74,0,0,0,101,0,
@@ -1275,7 +1275,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     32,32,32,78,41,1,114,76,0,0,0,169,2,114,143,0,
     0,0,114,65,0,0,0,114,7,0,0,0,114,7,0,0,
     0,114,8,0,0,0,218,10,112,97,116,104,95,109,116,105,
-    109,101,124,3,0,0,115,2,0,0,0,4,6,122,23,83,
+    109,101,125,3,0,0,115,2,0,0,0,4,6,122,23,83,
     111,117,114,99,101,76,111,97,100,101,114,46,112,97,116,104,
     95,109,116,105,109,101,99,2,0,0,0,0,0,0,0,0,
     0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,
@@ -1309,7 +1309,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     32,32,32,32,32,32,32,114,193,0,0,0,78,41,1,114,
     251,0,0,0,114,250,0,0,0,114,7,0,0,0,114,7,
     0,0,0,114,8,0,0,0,218,10,112,97,116,104,95,115,
-    116,97,116,115,132,3,0,0,115,2,0,0,0,14,12,122,
+    116,97,116,115,133,3,0,0,115,2,0,0,0,14,12,122,
     23,83,111,117,114,99,101,76,111,97,100,101,114,46,112,97,
     116,104,95,115,116,97,116,115,99,4,0,0,0,0,0,0,
     0,0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,
@@ -1333,7 +1333,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,0,90,10,99,97,99,104,101,95,112,97,116,104,114,
     41,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
     0,0,0,218,15,95,99,97,99,104,101,95,98,121,116,101,
-    99,111,100,101,146,3,0,0,115,2,0,0,0,12,8,122,
+    99,111,100,101,147,3,0,0,115,2,0,0,0,12,8,122,
     28,83,111,117,114,99,101,76,111,97,100,101,114,46,95,99,
     97,99,104,101,95,98,121,116,101,99,111,100,101,99,3,0,
     0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,0,
@@ -1350,7 +1350,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     32,32,32,32,32,78,114,7,0,0,0,41,3,114,143,0,
     0,0,114,65,0,0,0,114,41,0,0,0,114,7,0,0,
     0,114,7,0,0,0,114,8,0,0,0,114,253,0,0,0,
-    156,3,0,0,114,240,0,0,0,122,21,83,111,117,114,99,
+    157,3,0,0,114,240,0,0,0,122,21,83,111,117,114,99,
     101,76,111,97,100,101,114,46,115,101,116,95,100,97,116,97,
     99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
     0,10,0,0,0,67,0,0,0,115,70,0,0,0,124,0,
@@ -1370,7 +1370,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,114,163,0,0,0,114,65,0,0,0,114,198,0,0,
     0,218,3,101,120,99,114,7,0,0,0,114,7,0,0,0,
     114,8,0,0,0,218,10,103,101,116,95,115,111,117,114,99,
-    101,163,3,0,0,115,24,0,0,0,10,2,2,1,12,1,
+    101,164,3,0,0,115,24,0,0,0,10,2,2,1,12,1,
     8,4,14,253,4,1,2,1,4,255,2,1,2,255,8,128,
     2,255,122,23,83,111,117,114,99,101,76,111,97,100,101,114,
     46,103,101,116,95,115,111,117,114,99,101,114,130,0,0,0,
@@ -1392,7 +1392,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     7,99,111,109,112,105,108,101,41,4,114,143,0,0,0,114,
     41,0,0,0,114,65,0,0,0,114,2,1,0,0,114,7,
     0,0,0,114,7,0,0,0,114,8,0,0,0,218,14,115,
-    111,117,114,99,101,95,116,111,95,99,111,100,101,173,3,0,
+    111,117,114,99,101,95,116,111,95,99,111,100,101,174,3,0,
     0,115,6,0,0,0,12,5,4,1,6,255,122,27,83,111,
     117,114,99,101,76,111,97,100,101,114,46,115,111,117,114,99,
     101,95,116,111,95,99,111,100,101,99,2,0,0,0,0,0,
@@ -1468,7 +1468,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     2,115,116,114,41,0,0,0,114,175,0,0,0,114,16,0,
     0,0,90,10,98,121,116,101,115,95,100,97,116,97,90,11,
     99,111,100,101,95,111,98,106,101,99,116,114,7,0,0,0,
-    114,7,0,0,0,114,8,0,0,0,114,241,0,0,0,181,
+    114,7,0,0,0,114,8,0,0,0,114,241,0,0,0,182,
     3,0,0,115,168,0,0,0,10,7,4,1,4,1,4,1,
     4,1,4,1,2,1,12,1,14,1,8,1,2,2,14,1,
     14,1,4,1,12,2,2,1,14,1,14,1,4,1,2,3,
@@ -1486,7 +1486,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,0,114,254,0,0,0,114,253,0,0,0,114,1,1,
     0,0,114,5,1,0,0,114,241,0,0,0,114,7,0,0,
     0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
-    114,249,0,0,0,122,3,0,0,115,16,0,0,0,8,0,
+    114,249,0,0,0,123,3,0,0,115,16,0,0,0,8,0,
     8,2,8,8,8,14,8,10,8,7,14,10,12,8,114,249,
     0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
     0,0,0,0,4,0,0,0,0,0,0,0,115,92,0,0,
@@ -1513,7 +1513,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     101,10,32,32,32,32,32,32,32,32,102,105,110,100,101,114,
     46,78,114,183,0,0,0,41,3,114,143,0,0,0,114,163,
     0,0,0,114,65,0,0,0,114,7,0,0,0,114,7,0,
-    0,0,114,8,0,0,0,114,236,0,0,0,15,4,0,0,
+    0,0,114,8,0,0,0,114,236,0,0,0,16,4,0,0,
     115,4,0,0,0,6,3,10,1,122,19,70,105,108,101,76,
     111,97,100,101,114,46,95,95,105,110,105,116,95,95,99,2,
     0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,
@@ -1523,7 +1523,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     108,97,115,115,95,95,114,156,0,0,0,169,2,114,143,0,
     0,0,90,5,111,116,104,101,114,114,7,0,0,0,114,7,
     0,0,0,114,8,0,0,0,218,6,95,95,101,113,95,95,
-    21,4,0,0,243,6,0,0,0,12,1,10,1,2,255,122,
+    22,4,0,0,243,6,0,0,0,12,1,10,1,2,255,122,
     17,70,105,108,101,76,111,97,100,101,114,46,95,95,101,113,
     95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,1,
     0,0,0,3,0,0,0,67,0,0,0,243,20,0,0,0,
@@ -1531,7 +1531,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     65,0,83,0,114,69,0,0,0,169,3,218,4,104,97,115,
     104,114,141,0,0,0,114,65,0,0,0,169,1,114,143,0,
     0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
-    0,218,8,95,95,104,97,115,104,95,95,25,4,0,0,243,
+    0,218,8,95,95,104,97,115,104,95,95,26,4,0,0,243,
     2,0,0,0,20,1,122,19,70,105,108,101,76,111,97,100,
     101,114,46,95,95,104,97,115,104,95,95,99,2,0,0,0,
     0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
@@ -1546,7 +1546,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     32,78,41,3,218,5,115,117,112,101,114,114,11,1,0,0,
     114,248,0,0,0,114,247,0,0,0,169,1,114,14,1,0,
     0,114,7,0,0,0,114,8,0,0,0,114,248,0,0,0,
-    28,4,0,0,115,2,0,0,0,16,10,122,22,70,105,108,
+    29,4,0,0,115,2,0,0,0,16,10,122,22,70,105,108,
     101,76,111,97,100,101,114,46,108,111,97,100,95,109,111,100,
     117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0,
     2,0,0,0,1,0,0,0,67,0,0,0,243,6,0,0,
@@ -1556,7 +1556,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     32,102,111,117,110,100,32,98,121,32,116,104,101,32,102,105,
     110,100,101,114,46,78,114,71,0,0,0,114,247,0,0,0,
     114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
-    203,0,0,0,40,4,0,0,243,2,0,0,0,6,3,122,
+    203,0,0,0,41,4,0,0,243,2,0,0,0,6,3,122,
     23,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,
     102,105,108,101,110,97,109,101,99,2,0,0,0,0,0,0,
     0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0,
@@ -1577,7 +1577,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     110,95,99,111,100,101,114,109,0,0,0,90,4,114,101,97,
     100,114,92,0,0,0,41,3,114,143,0,0,0,114,65,0,
     0,0,114,94,0,0,0,114,7,0,0,0,114,7,0,0,
-    0,114,8,0,0,0,114,255,0,0,0,45,4,0,0,115,
+    0,114,8,0,0,0,114,255,0,0,0,46,4,0,0,115,
     22,0,0,0,14,2,16,1,6,1,14,255,2,1,20,255,
     14,3,6,1,14,255,2,1,20,255,122,19,70,105,108,101,
     76,111,97,100,101,114,46,103,101,116,95,100,97,116,97,99,
@@ -1590,7 +1590,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,41,3,114,143,0,0,0,114,244,0,0,0,114,31,1,
     0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
     0,218,19,103,101,116,95,114,101,115,111,117,114,99,101,95,
-    114,101,97,100,101,114,54,4,0,0,115,4,0,0,0,12,
+    114,101,97,100,101,114,55,4,0,0,115,4,0,0,0,12,
     2,8,1,122,30,70,105,108,101,76,111,97,100,101,114,46,
     103,101,116,95,114,101,115,111,117,114,99,101,95,114,101,97,
     100,101,114,41,13,114,150,0,0,0,114,149,0,0,0,114,
@@ -1599,7 +1599,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,114,203,0,0,0,114,255,0,0,0,114,33,1,0,
     0,90,13,95,95,99,108,97,115,115,99,101,108,108,95,95,
     114,7,0,0,0,114,7,0,0,0,114,25,1,0,0,114,
-    8,0,0,0,114,11,1,0,0,10,4,0,0,115,24,0,
+    8,0,0,0,114,11,1,0,0,11,4,0,0,115,24,0,
     0,0,8,0,4,2,8,3,8,6,8,4,2,3,14,1,
     2,11,10,1,8,4,2,9,18,1,114,11,1,0,0,99,
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -1622,7 +1622,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     95,109,116,105,109,101,90,7,115,116,95,115,105,122,101,41,
     3,114,143,0,0,0,114,65,0,0,0,114,10,1,0,0,
     114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
-    252,0,0,0,64,4,0,0,115,4,0,0,0,8,2,14,
+    252,0,0,0,65,4,0,0,115,4,0,0,0,8,2,14,
     1,122,27,83,111,117,114,99,101,70,105,108,101,76,111,97,
     100,101,114,46,112,97,116,104,95,115,116,97,116,115,99,4,
     0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,
@@ -1632,7 +1632,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     41,2,114,139,0,0,0,114,253,0,0,0,41,5,114,143,
     0,0,0,114,134,0,0,0,114,132,0,0,0,114,41,0,
     0,0,114,78,0,0,0,114,7,0,0,0,114,7,0,0,
-    0,114,8,0,0,0,114,254,0,0,0,69,4,0,0,115,
+    0,114,8,0,0,0,114,254,0,0,0,70,4,0,0,115,
     4,0,0,0,8,2,16,1,122,32,83,111,117,114,99,101,
     70,105,108,101,76,111,97,100,101,114,46,95,99,97,99,104,
     101,95,98,121,116,101,99,111,100,101,114,87,0,0,0,114,
@@ -1668,7 +1668,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,218,6,112,97,114,101,110,116,114,120,0,0,0,114,
     63,0,0,0,114,68,0,0,0,114,0,1,0,0,114,7,
     0,0,0,114,7,0,0,0,114,8,0,0,0,114,253,0,
-    0,0,74,4,0,0,115,56,0,0,0,12,2,4,1,12,
+    0,0,75,4,0,0,115,56,0,0,0,12,2,4,1,12,
     2,12,1,10,1,12,254,12,4,10,1,2,1,14,1,12,
     1,4,2,14,1,6,3,4,1,4,255,16,2,8,128,2,
     1,12,1,18,1,14,1,8,2,2,1,18,255,8,128,2,
@@ -1677,7 +1677,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     7,114,150,0,0,0,114,149,0,0,0,114,151,0,0,0,
     114,152,0,0,0,114,252,0,0,0,114,254,0,0,0,114,
     253,0,0,0,114,7,0,0,0,114,7,0,0,0,114,7,
-    0,0,0,114,8,0,0,0,114,34,1,0,0,60,4,0,
+    0,0,0,114,8,0,0,0,114,34,1,0,0,61,4,0,
     0,115,10,0,0,0,8,0,4,2,8,2,8,5,18,5,
     114,34,1,0,0,99,0,0,0,0,0,0,0,0,0,0,
     0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,32,
@@ -1699,7 +1699,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,114,176,0,0,0,114,189,0,0,0,114,7,1,0,0,
     41,5,114,143,0,0,0,114,163,0,0,0,114,65,0,0,
     0,114,41,0,0,0,114,175,0,0,0,114,7,0,0,0,
-    114,7,0,0,0,114,8,0,0,0,114,241,0,0,0,109,
+    114,7,0,0,0,114,8,0,0,0,114,241,0,0,0,110,
     4,0,0,115,22,0,0,0,10,1,10,1,2,4,2,1,
     6,254,12,4,2,1,14,1,2,1,2,1,6,253,122,29,
     83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,111,
@@ -1710,13 +1710,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     101,114,101,32,105,115,32,110,111,32,115,111,117,114,99,101,
     32,99,111,100,101,46,78,114,7,0,0,0,114,247,0,0,
     0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
-    114,1,1,0,0,125,4,0,0,114,24,0,0,0,122,31,
+    114,1,1,0,0,126,4,0,0,114,24,0,0,0,122,31,
     83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,111,
     97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,78,
     41,6,114,150,0,0,0,114,149,0,0,0,114,151,0,0,
     0,114,152,0,0,0,114,241,0,0,0,114,1,1,0,0,
     114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
-    8,0,0,0,114,41,1,0,0,105,4,0,0,115,8,0,
+    8,0,0,0,114,41,1,0,0,106,4,0,0,115,8,0,
     0,0,8,0,4,2,8,2,12,16,114,41,1,0,0,99,
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
     3,0,0,0,64,0,0,0,115,92,0,0,0,101,0,90,
@@ -1737,20 +1737,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,95,0,124,2,124,0,95,1,100,0,83,0,114,69,0,
     0,0,114,183,0,0,0,41,3,114,143,0,0,0,114,141,
     0,0,0,114,65,0,0,0,114,7,0,0,0,114,7,0,
-    0,0,114,8,0,0,0,114,236,0,0,0,138,4,0,0,
+    0,0,114,8,0,0,0,114,236,0,0,0,139,4,0,0,
     115,4,0,0,0,6,1,10,1,122,28,69,120,116,101,110,
     115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,95,
     95,105,110,105,116,95,95,99,2,0,0,0,0,0,0,0,
     0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,
     114,12,1,0,0,114,69,0,0,0,114,13,1,0,0,114,
     15,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
-    0,0,0,114,16,1,0,0,142,4,0,0,114,17,1,0,
+    0,0,0,114,16,1,0,0,143,4,0,0,114,17,1,0,
     0,122,26,69,120,116,101,110,115,105,111,110,70,105,108,101,
     76,111,97,100,101,114,46,95,95,101,113,95,95,99,1,0,
     0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,
     0,0,67,0,0,0,114,18,1,0,0,114,69,0,0,0,
     114,19,1,0,0,114,21,1,0,0,114,7,0,0,0,114,
-    7,0,0,0,114,8,0,0,0,114,22,1,0,0,146,4,
+    7,0,0,0,114,8,0,0,0,114,22,1,0,0,147,4,
     0,0,114,23,1,0,0,122,28,69,120,116,101,110,115,105,
     111,110,70,105,108,101,76,111,97,100,101,114,46,95,95,104,
     97,115,104,95,95,99,2,0,0,0,0,0,0,0,0,0,
@@ -1767,7 +1767,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     97,116,101,95,100,121,110,97,109,105,99,114,173,0,0,0,
     114,141,0,0,0,114,65,0,0,0,41,3,114,143,0,0,
     0,114,210,0,0,0,114,244,0,0,0,114,7,0,0,0,
-    114,7,0,0,0,114,8,0,0,0,114,239,0,0,0,149,
+    114,7,0,0,0,114,8,0,0,0,114,239,0,0,0,150,
     4,0,0,115,14,0,0,0,4,2,6,1,4,255,6,2,
     8,1,4,255,4,2,122,33,69,120,116,101,110,115,105,111,
     110,70,105,108,101,76,111,97,100,101,114,46,99,114,101,97,
@@ -1785,7 +1785,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     100,121,110,97,109,105,99,114,173,0,0,0,114,141,0,0,
     0,114,65,0,0,0,169,2,114,143,0,0,0,114,244,0,
     0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
-    0,114,245,0,0,0,157,4,0,0,115,8,0,0,0,14,
+    0,114,245,0,0,0,158,4,0,0,115,8,0,0,0,14,
     2,6,1,8,1,8,255,122,31,69,120,116,101,110,115,105,
     111,110,70,105,108,101,76,111,97,100,101,114,46,101,120,101,
     99,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,
@@ -1803,14 +1803,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     114,236,0,0,0,78,114,7,0,0,0,169,2,114,5,0,
     0,0,218,6,115,117,102,102,105,120,169,1,90,9,102,105,
     108,101,95,110,97,109,101,114,7,0,0,0,114,8,0,0,
-    0,114,9,0,0,0,166,4,0,0,115,6,0,0,0,6,
+    0,114,9,0,0,0,167,4,0,0,115,6,0,0,0,6,
     128,2,1,20,255,122,49,69,120,116,101,110,115,105,111,110,
     70,105,108,101,76,111,97,100,101,114,46,105,115,95,112,97,
     99,107,97,103,101,46,60,108,111,99,97,108,115,62,46,60,
     103,101,110,101,120,112,114,62,78,41,4,114,74,0,0,0,
     114,65,0,0,0,218,3,97,110,121,114,232,0,0,0,114,
     247,0,0,0,114,7,0,0,0,114,45,1,0,0,114,8,
-    0,0,0,114,206,0,0,0,163,4,0,0,115,8,0,0,
+    0,0,0,114,206,0,0,0,164,4,0,0,115,8,0,0,
     0,14,2,12,1,2,1,8,255,122,30,69,120,116,101,110,
     115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,105,
     115,95,112,97,99,107,97,103,101,99,2,0,0,0,0,0,
@@ -1821,7 +1821,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     110,110,111,116,32,99,114,101,97,116,101,32,97,32,99,111,
     100,101,32,111,98,106,101,99,116,46,78,114,7,0,0,0,
     114,247,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
-    8,0,0,0,114,241,0,0,0,169,4,0,0,114,24,0,
+    8,0,0,0,114,241,0,0,0,170,4,0,0,114,24,0,
     0,0,122,28,69,120,116,101,110,115,105,111,110,70,105,108,
     101,76,111,97,100,101,114,46,103,101,116,95,99,111,100,101,
     99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
@@ -1831,14 +1831,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     101,115,32,104,97,118,101,32,110,111,32,115,111,117,114,99,
     101,32,99,111,100,101,46,78,114,7,0,0,0,114,247,0,
     0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
-    0,114,1,1,0,0,173,4,0,0,114,24,0,0,0,122,
+    0,114,1,1,0,0,174,4,0,0,114,24,0,0,0,122,
     30,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,
     97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,99,
     2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
     1,0,0,0,67,0,0,0,114,26,1,0,0,114,27,1,
     0,0,114,71,0,0,0,114,247,0,0,0,114,7,0,0,
     0,114,7,0,0,0,114,8,0,0,0,114,203,0,0,0,
-    177,4,0,0,114,28,1,0,0,122,32,69,120,116,101,110,
+    178,4,0,0,114,28,1,0,0,122,32,69,120,116,101,110,
     115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,103,
     101,116,95,102,105,108,101,110,97,109,101,78,41,14,114,150,
     0,0,0,114,149,0,0,0,114,151,0,0,0,114,152,0,
@@ -1846,7 +1846,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,114,239,0,0,0,114,245,0,0,0,114,206,0,0,0,
     114,241,0,0,0,114,1,1,0,0,114,160,0,0,0,114,
     203,0,0,0,114,7,0,0,0,114,7,0,0,0,114,7,
-    0,0,0,114,8,0,0,0,114,30,1,0,0,130,4,0,
+    0,0,0,114,8,0,0,0,114,30,1,0,0,131,4,0,
     0,115,24,0,0,0,8,0,4,2,8,6,8,4,8,4,
     8,3,8,8,8,6,8,6,8,4,2,4,14,1,114,30,
     1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -1889,7 +1889,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     105,110,100,101,114,169,4,114,143,0,0,0,114,141,0,0,
     0,114,65,0,0,0,90,11,112,97,116,104,95,102,105,110,
     100,101,114,114,7,0,0,0,114,7,0,0,0,114,8,0,
-    0,0,114,236,0,0,0,190,4,0,0,115,8,0,0,0,
+    0,0,114,236,0,0,0,191,4,0,0,115,8,0,0,0,
     6,1,6,1,14,1,10,1,122,23,95,78,97,109,101,115,
     112,97,99,101,80,97,116,104,46,95,95,105,110,105,116,95,
     95,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,
@@ -1907,7 +1907,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     218,3,100,111,116,90,2,109,101,114,7,0,0,0,114,7,
     0,0,0,114,8,0,0,0,218,23,95,102,105,110,100,95,
     112,97,114,101,110,116,95,112,97,116,104,95,110,97,109,101,
-    115,196,4,0,0,115,8,0,0,0,18,2,8,1,4,2,
+    115,197,4,0,0,115,8,0,0,0,18,2,8,1,4,2,
     8,3,122,38,95,78,97,109,101,115,112,97,99,101,80,97,
     116,104,46,95,102,105,110,100,95,112,97,114,101,110,116,95,
     112,97,116,104,95,110,97,109,101,115,99,1,0,0,0,0,
@@ -1920,7 +1920,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     110,116,95,109,111,100,117,108,101,95,110,97,109,101,90,14,
     112,97,116,104,95,97,116,116,114,95,110,97,109,101,114,7,
     0,0,0,114,7,0,0,0,114,8,0,0,0,114,50,1,
-    0,0,206,4,0,0,115,4,0,0,0,12,1,16,1,122,
+    0,0,207,4,0,0,115,4,0,0,0,12,1,16,1,122,
     31,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,
     95,103,101,116,95,112,97,114,101,110,116,95,112,97,116,104,
     99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
@@ -1936,7 +1936,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     143,0,0,0,90,11,112,97,114,101,110,116,95,112,97,116,
     104,114,210,0,0,0,114,7,0,0,0,114,7,0,0,0,
     114,8,0,0,0,218,12,95,114,101,99,97,108,99,117,108,
-    97,116,101,210,4,0,0,115,16,0,0,0,12,2,10,1,
+    97,116,101,211,4,0,0,115,16,0,0,0,12,2,10,1,
     14,1,18,3,6,1,8,1,6,1,6,1,122,27,95,78,
     97,109,101,115,112,97,99,101,80,97,116,104,46,95,114,101,
     99,97,108,99,117,108,97,116,101,99,1,0,0,0,0,0,
@@ -1945,7 +1945,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     1,83,0,114,69,0,0,0,41,2,218,4,105,116,101,114,
     114,57,1,0,0,114,21,1,0,0,114,7,0,0,0,114,
     7,0,0,0,114,8,0,0,0,218,8,95,95,105,116,101,
-    114,95,95,223,4,0,0,243,2,0,0,0,12,1,122,23,
+    114,95,95,224,4,0,0,243,2,0,0,0,12,1,122,23,
     95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,
     95,105,116,101,114,95,95,99,2,0,0,0,0,0,0,0,
     0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,
@@ -1953,7 +1953,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,114,69,0,0,0,169,1,114,57,1,0,0,41,2,114,
     143,0,0,0,218,5,105,110,100,101,120,114,7,0,0,0,
     114,7,0,0,0,114,8,0,0,0,218,11,95,95,103,101,
-    116,105,116,101,109,95,95,226,4,0,0,114,61,1,0,0,
+    116,105,116,101,109,95,95,227,4,0,0,114,61,1,0,0,
     122,26,95,78,97,109,101,115,112,97,99,101,80,97,116,104,
     46,95,95,103,101,116,105,116,101,109,95,95,99,3,0,0,
     0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,
@@ -1962,14 +1962,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     49,1,0,0,41,3,114,143,0,0,0,114,63,1,0,0,
     114,65,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
     8,0,0,0,218,11,95,95,115,101,116,105,116,101,109,95,
-    95,229,4,0,0,115,2,0,0,0,14,1,122,26,95,78,
+    95,230,4,0,0,115,2,0,0,0,14,1,122,26,95,78,
     97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,115,
     101,116,105,116,101,109,95,95,99,1,0,0,0,0,0,0,
     0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,
     0,114,58,1,0,0,114,69,0,0,0,41,2,114,4,0,
     0,0,114,57,1,0,0,114,21,1,0,0,114,7,0,0,
     0,114,7,0,0,0,114,8,0,0,0,218,7,95,95,108,
-    101,110,95,95,232,4,0,0,114,61,1,0,0,122,22,95,
+    101,110,95,95,233,4,0,0,114,61,1,0,0,122,22,95,
     78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,
     108,101,110,95,95,99,1,0,0,0,0,0,0,0,0,0,
     0,0,1,0,0,0,3,0,0,0,67,0,0,0,243,12,
@@ -1978,7 +1978,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     116,104,40,123,33,114,125,41,41,2,114,89,0,0,0,114,
     49,1,0,0,114,21,1,0,0,114,7,0,0,0,114,7,
     0,0,0,114,8,0,0,0,218,8,95,95,114,101,112,114,
-    95,95,235,4,0,0,114,61,1,0,0,122,23,95,78,97,
+    95,95,236,4,0,0,114,61,1,0,0,122,23,95,78,97,
     109,101,115,112,97,99,101,80,97,116,104,46,95,95,114,101,
     112,114,95,95,99,2,0,0,0,0,0,0,0,0,0,0,
     0,2,0,0,0,3,0,0,0,67,0,0,0,115,12,0,
@@ -1986,7 +1986,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,0,114,62,1,0,0,169,2,114,143,0,0,0,218,
     4,105,116,101,109,114,7,0,0,0,114,7,0,0,0,114,
     8,0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,
-    95,95,238,4,0,0,114,61,1,0,0,122,27,95,78,97,
+    95,95,239,4,0,0,114,61,1,0,0,122,27,95,78,97,
     109,101,115,112,97,99,101,80,97,116,104,46,95,95,99,111,
     110,116,97,105,110,115,95,95,99,2,0,0,0,0,0,0,
     0,0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,
@@ -1994,7 +1994,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     1,0,100,0,83,0,114,69,0,0,0,41,2,114,49,1,
     0,0,114,61,0,0,0,114,69,1,0,0,114,7,0,0,
     0,114,7,0,0,0,114,8,0,0,0,114,61,0,0,0,
-    241,4,0,0,243,2,0,0,0,16,1,122,21,95,78,97,
+    242,4,0,0,243,2,0,0,0,16,1,122,21,95,78,97,
     109,101,115,112,97,99,101,80,97,116,104,46,97,112,112,101,
     110,100,78,41,15,114,150,0,0,0,114,149,0,0,0,114,
     151,0,0,0,114,152,0,0,0,114,236,0,0,0,114,55,
@@ -2002,7 +2002,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,114,64,1,0,0,114,65,1,0,0,114,66,1,0,
     0,114,68,1,0,0,114,71,1,0,0,114,61,0,0,0,
     114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
-    8,0,0,0,114,47,1,0,0,183,4,0,0,115,26,0,
+    8,0,0,0,114,47,1,0,0,184,4,0,0,115,26,0,
     0,0,8,0,4,1,8,6,8,6,8,10,8,4,8,13,
     8,3,8,3,8,3,8,3,8,3,12,3,114,47,1,0,
     0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -2019,7 +2019,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     3,131,3,124,0,95,1,100,0,83,0,114,69,0,0,0,
     41,2,114,47,1,0,0,114,49,1,0,0,114,53,1,0,
     0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
-    114,236,0,0,0,247,4,0,0,115,2,0,0,0,18,1,
+    114,236,0,0,0,248,4,0,0,115,2,0,0,0,18,1,
     122,25,95,78,97,109,101,115,112,97,99,101,76,111,97,100,
     101,114,46,95,95,105,110,105,116,95,95,99,1,0,0,0,
     0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,
@@ -2043,21 +2043,21 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     100,0,0,0,114,101,0,0,0,114,89,0,0,0,114,150,
     0,0,0,41,1,114,244,0,0,0,114,7,0,0,0,114,
     7,0,0,0,114,8,0,0,0,218,11,109,111,100,117,108,
-    101,95,114,101,112,114,250,4,0,0,115,8,0,0,0,6,
+    101,95,114,101,112,114,251,4,0,0,115,8,0,0,0,6,
     7,2,1,4,255,12,2,122,28,95,78,97,109,101,115,112,
     97,99,101,76,111,97,100,101,114,46,109,111,100,117,108,101,
     95,114,101,112,114,99,2,0,0,0,0,0,0,0,0,0,
     0,0,2,0,0,0,1,0,0,0,67,0,0,0,114,23,
     0,0,0,41,2,78,84,114,7,0,0,0,114,247,0,0,
     0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
-    114,206,0,0,0,5,5,0,0,243,2,0,0,0,4,1,
+    114,206,0,0,0,6,5,0,0,243,2,0,0,0,4,1,
     122,27,95,78,97,109,101,115,112,97,99,101,76,111,97,100,
     101,114,46,105,115,95,112,97,99,107,97,103,101,99,2,0,
     0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,
     0,0,67,0,0,0,114,23,0,0,0,41,2,78,114,10,
     0,0,0,114,7,0,0,0,114,247,0,0,0,114,7,0,
     0,0,114,7,0,0,0,114,8,0,0,0,114,1,1,0,
-    0,8,5,0,0,114,75,1,0,0,122,27,95,78,97,109,
+    0,9,5,0,0,114,75,1,0,0,122,27,95,78,97,109,
     101,115,112,97,99,101,76,111,97,100,101,114,46,103,101,116,
     95,115,111,117,114,99,101,99,2,0,0,0,0,0,0,0,
     0,0,0,0,2,0,0,0,6,0,0,0,67,0,0,0,
@@ -2066,20 +2066,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     115,116,114,105,110,103,62,114,243,0,0,0,84,41,1,114,
     3,1,0,0,41,1,114,4,1,0,0,114,247,0,0,0,
     114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
-    241,0,0,0,11,5,0,0,114,72,1,0,0,122,25,95,
+    241,0,0,0,12,5,0,0,114,72,1,0,0,122,25,95,
     78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,
     103,101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,
     0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,
     0,114,23,0,0,0,114,237,0,0,0,114,7,0,0,0,
     114,238,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
-    8,0,0,0,114,239,0,0,0,14,5,0,0,114,240,0,
+    8,0,0,0,114,239,0,0,0,15,5,0,0,114,240,0,
     0,0,122,30,95,78,97,109,101,115,112,97,99,101,76,111,
     97,100,101,114,46,99,114,101,97,116,101,95,109,111,100,117,
     108,101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,
     0,0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,
     100,0,83,0,114,69,0,0,0,114,7,0,0,0,114,42,
     1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
-    0,0,114,245,0,0,0,17,5,0,0,114,75,1,0,0,
+    0,0,114,245,0,0,0,18,5,0,0,114,75,1,0,0,
     122,28,95,78,97,109,101,115,112,97,99,101,76,111,97,100,
     101,114,46,101,120,101,99,95,109,111,100,117,108,101,99,2,
     0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,
@@ -2097,7 +2097,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     123,33,114,125,78,41,4,114,159,0,0,0,114,173,0,0,
     0,114,49,1,0,0,114,246,0,0,0,114,247,0,0,0,
     114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
-    248,0,0,0,20,5,0,0,115,8,0,0,0,6,7,4,
+    248,0,0,0,21,5,0,0,115,8,0,0,0,6,7,4,
     1,4,255,12,3,122,28,95,78,97,109,101,115,112,97,99,
     101,76,111,97,100,101,114,46,108,111,97,100,95,109,111,100,
     117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0,
@@ -2108,7 +2108,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     101,114,41,3,114,32,1,0,0,114,76,1,0,0,114,49,
     1,0,0,41,3,114,143,0,0,0,114,244,0,0,0,114,
     76,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
-    0,0,0,114,33,1,0,0,32,5,0,0,115,4,0,0,
+    0,0,0,114,33,1,0,0,33,5,0,0,115,4,0,0,
     0,12,1,10,1,122,36,95,78,97,109,101,115,112,97,99,
     101,76,111,97,100,101,114,46,103,101,116,95,114,101,115,111,
     117,114,99,101,95,114,101,97,100,101,114,78,41,13,114,150,
@@ -2117,7 +2117,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,114,1,1,0,0,114,241,0,0,0,114,239,0,0,0,
     114,245,0,0,0,114,248,0,0,0,114,33,1,0,0,114,
     7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
-    0,0,0,114,73,1,0,0,246,4,0,0,115,22,0,0,
+    0,0,0,114,73,1,0,0,247,4,0,0,115,22,0,0,
     0,8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,
     3,8,3,8,3,12,12,114,73,1,0,0,99,0,0,0,
     0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
@@ -2154,7 +2154,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     99,104,101,218,5,105,116,101,109,115,114,153,0,0,0,114,
     78,1,0,0,41,2,114,141,0,0,0,218,6,102,105,110,
     100,101,114,114,7,0,0,0,114,7,0,0,0,114,8,0,
-    0,0,114,78,1,0,0,43,5,0,0,115,14,0,0,0,
+    0,0,114,78,1,0,0,44,5,0,0,115,14,0,0,0,
     22,4,8,1,10,1,10,1,8,1,2,128,4,252,122,28,
     80,97,116,104,70,105,110,100,101,114,46,105,110,118,97,108,
     105,100,97,116,101,95,99,97,99,104,101,115,99,1,0,0,
@@ -2174,7 +2174,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     162,0,0,0,114,142,0,0,0,41,2,114,65,0,0,0,
     90,4,104,111,111,107,114,7,0,0,0,114,7,0,0,0,
     114,8,0,0,0,218,11,95,112,97,116,104,95,104,111,111,
-    107,115,53,5,0,0,115,18,0,0,0,16,3,12,1,10,
+    107,115,54,5,0,0,115,18,0,0,0,16,3,12,1,10,
     1,2,1,14,1,12,1,4,1,4,2,2,253,122,22,80,
     97,116,104,70,105,110,100,101,114,46,95,112,97,116,104,95,
     104,111,111,107,115,99,2,0,0,0,0,0,0,0,0,0,
@@ -2206,7 +2206,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,114,65,0,0,0,114,82,1,0,0,114,7,0,0,
     0,114,7,0,0,0,114,8,0,0,0,218,20,95,112,97,
     116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,
-    101,66,5,0,0,115,28,0,0,0,8,8,2,1,12,1,
+    101,67,5,0,0,115,28,0,0,0,8,8,2,1,12,1,
     12,1,6,3,2,1,12,1,4,4,12,253,10,1,12,1,
     4,1,2,253,2,250,122,31,80,97,116,104,70,105,110,100,
     101,114,46,95,112,97,116,104,95,105,109,112,111,114,116,101,
@@ -2236,7 +2236,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,0,114,82,1,0,0,114,166,0,0,0,114,164,0,
     0,0,114,165,0,0,0,114,210,0,0,0,114,7,0,0,
     0,114,7,0,0,0,114,8,0,0,0,218,16,95,108,101,
-    103,97,99,121,95,103,101,116,95,115,112,101,99,88,5,0,
+    103,97,99,121,95,103,101,116,95,115,112,101,99,89,5,0,
     0,115,26,0,0,0,10,4,16,1,12,2,16,1,16,2,
     12,2,10,1,4,1,8,1,12,1,12,1,6,1,4,1,
     122,27,80,97,116,104,70,105,110,100,101,114,46,95,108,101,
@@ -2268,7 +2268,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     101,115,112,97,99,101,95,112,97,116,104,90,5,101,110,116,
     114,121,114,82,1,0,0,114,210,0,0,0,114,165,0,0,
     0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
-    218,9,95,103,101,116,95,115,112,101,99,109,5,0,0,115,
+    218,9,95,103,101,116,95,115,112,101,99,110,5,0,0,115,
     42,0,0,0,4,5,8,1,14,1,2,1,10,1,8,1,
     10,1,14,1,12,2,8,1,2,1,10,1,8,1,6,1,
     8,1,8,1,10,5,2,128,12,2,6,1,4,1,122,20,
@@ -2295,7 +2295,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,0,114,47,1,0,0,41,6,114,221,0,0,0,114,163,
     0,0,0,114,65,0,0,0,114,225,0,0,0,114,210,0,
     0,0,114,90,1,0,0,114,7,0,0,0,114,7,0,0,
-    0,114,8,0,0,0,114,226,0,0,0,141,5,0,0,115,
+    0,114,8,0,0,0,114,226,0,0,0,142,5,0,0,115,
     26,0,0,0,8,6,6,1,14,1,8,1,4,1,10,1,
     6,1,4,1,6,3,16,1,4,1,4,2,4,2,122,20,
     80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,
@@ -2323,7 +2323,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,
     100,78,114,227,0,0,0,114,228,0,0,0,114,7,0,0,
     0,114,7,0,0,0,114,8,0,0,0,114,229,0,0,0,
-    165,5,0,0,115,14,0,0,0,6,8,2,2,4,254,12,
+    166,5,0,0,115,14,0,0,0,6,8,2,2,4,254,12,
     3,8,1,4,1,6,1,122,22,80,97,116,104,70,105,110,
     100,101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,
     0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
@@ -2355,7 +2355,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     115,116,114,105,98,117,116,105,111,110,115,41,3,114,144,0,
     0,0,114,145,0,0,0,114,92,1,0,0,114,7,0,0,
     0,114,7,0,0,0,114,8,0,0,0,114,93,1,0,0,
-    181,5,0,0,115,4,0,0,0,12,10,16,1,122,29,80,
+    182,5,0,0,115,4,0,0,0,12,10,16,1,122,29,80,
     97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,100,
     105,115,116,114,105,98,117,116,105,111,110,115,114,69,0,0,
     0,114,230,0,0,0,41,14,114,150,0,0,0,114,149,0,
@@ -2364,7 +2364,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     114,87,1,0,0,114,88,1,0,0,114,91,1,0,0,114,
     226,0,0,0,114,229,0,0,0,114,93,1,0,0,114,7,
     0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
-    0,0,114,77,1,0,0,39,5,0,0,115,36,0,0,0,
+    0,0,114,77,1,0,0,40,5,0,0,115,36,0,0,0,
     8,0,4,2,2,2,10,1,2,9,10,1,2,12,10,1,
     2,21,10,1,2,20,12,1,2,31,12,1,2,23,12,1,
     2,15,14,1,114,77,1,0,0,99,0,0,0,0,0,0,
@@ -2411,7 +2411,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     1,136,0,102,2,86,0,1,0,113,2,100,0,83,0,114,
     69,0,0,0,114,7,0,0,0,114,43,1,0,0,169,1,
     114,164,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
-    9,0,0,0,210,5,0,0,115,4,0,0,0,6,128,18,
+    9,0,0,0,211,5,0,0,115,4,0,0,0,6,128,18,
     0,122,38,70,105,108,101,70,105,110,100,101,114,46,95,95,
     105,110,105,116,95,95,46,60,108,111,99,97,108,115,62,46,
     60,103,101,110,101,120,112,114,62,114,97,0,0,0,114,130,
@@ -2425,7 +2425,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     108,111,97,100,101,114,95,100,101,116,97,105,108,115,90,7,
     108,111,97,100,101,114,115,114,212,0,0,0,114,7,0,0,
     0,114,95,1,0,0,114,8,0,0,0,114,236,0,0,0,
-    204,5,0,0,115,20,0,0,0,4,4,12,1,26,1,6,
+    205,5,0,0,115,20,0,0,0,4,4,12,1,26,1,6,
     1,10,2,10,1,18,1,6,1,8,1,12,1,122,19,70,
     105,108,101,70,105,110,100,101,114,46,95,95,105,110,105,116,
     95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,1,
@@ -2435,7 +2435,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     101,99,116,111,114,121,32,109,116,105,109,101,46,114,130,0,
     0,0,78,41,1,114,97,1,0,0,114,21,1,0,0,114,
     7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,78,
-    1,0,0,220,5,0,0,114,81,0,0,0,122,28,70,105,
+    1,0,0,221,5,0,0,114,81,0,0,0,122,28,70,105,
     108,101,70,105,110,100,101,114,46,105,110,118,97,108,105,100,
     97,116,101,95,99,97,99,104,101,115,99,2,0,0,0,0,
     0,0,0,0,0,0,0,3,0,0,0,4,0,0,0,67,
@@ -2466,7 +2466,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     114,226,0,0,0,114,164,0,0,0,114,202,0,0,0,41,
     3,114,143,0,0,0,114,163,0,0,0,114,210,0,0,0,
     114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
-    161,0,0,0,226,5,0,0,115,14,0,0,0,6,7,2,
+    161,0,0,0,227,5,0,0,115,14,0,0,0,6,7,2,
     2,4,254,10,3,8,1,8,1,16,1,122,22,70,105,108,
     101,70,105,110,100,101,114,46,102,105,110,100,95,108,111,97,
     100,101,114,99,6,0,0,0,0,0,0,0,0,0,0,0,
@@ -2477,7 +2477,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,114,211,0,0,0,114,163,0,0,0,114,65,0,0,0,
     90,4,115,109,115,108,114,225,0,0,0,114,164,0,0,0,
     114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
-    91,1,0,0,241,5,0,0,115,8,0,0,0,10,1,8,
+    91,1,0,0,242,5,0,0,115,8,0,0,0,10,1,8,
     1,2,1,6,255,122,20,70,105,108,101,70,105,110,100,101,
     114,46,95,103,101,116,95,115,112,101,99,78,99,3,0,0,
     0,0,0,0,0,0,0,0,0,14,0,0,0,9,0,0,
@@ -2533,7 +2533,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,114,211,0,0,0,90,13,105,110,105,116,95,102,105,108,
     101,110,97,109,101,90,9,102,117,108,108,95,112,97,116,104,
     114,210,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
-    8,0,0,0,114,226,0,0,0,246,5,0,0,115,86,0,
+    8,0,0,0,114,226,0,0,0,247,5,0,0,115,86,0,
     0,0,4,5,14,1,2,1,24,1,12,1,6,1,10,1,
     8,1,6,1,6,2,6,1,10,1,6,2,4,1,8,2,
     12,1,14,1,8,1,10,1,8,1,24,1,2,255,8,5,
@@ -2565,7 +2565,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,124,0,93,6,125,1,124,1,160,0,161,0,146,2,113,
     2,83,0,114,7,0,0,0,41,1,114,131,0,0,0,41,
     2,114,5,0,0,0,90,2,102,110,114,7,0,0,0,114,
-    7,0,0,0,114,8,0,0,0,114,13,0,0,0,70,6,
+    7,0,0,0,114,8,0,0,0,114,13,0,0,0,71,6,
     0,0,115,2,0,0,0,20,0,122,41,70,105,108,101,70,
     105,110,100,101,114,46,95,102,105,108,108,95,99,97,99,104,
     101,46,60,108,111,99,97,108,115,62,46,60,115,101,116,99,
@@ -2582,7 +2582,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     102,102,105,120,95,99,111,110,116,101,110,116,115,114,70,1,
     0,0,114,141,0,0,0,114,54,1,0,0,114,44,1,0,
     0,90,8,110,101,119,95,110,97,109,101,114,7,0,0,0,
-    114,7,0,0,0,114,8,0,0,0,114,102,1,0,0,41,
+    114,7,0,0,0,114,8,0,0,0,114,102,1,0,0,42,
     6,0,0,115,38,0,0,0,6,2,2,1,22,1,18,1,
     6,3,12,3,12,1,6,7,8,1,16,1,4,1,18,1,
     4,2,12,1,6,1,12,1,20,1,4,255,2,233,122,22,
@@ -2621,7 +2621,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,114,142,0,0,0,114,71,0,0,0,169,2,114,221,0,
     0,0,114,101,1,0,0,114,7,0,0,0,114,8,0,0,
     0,218,24,112,97,116,104,95,104,111,111,107,95,102,111,114,
-    95,70,105,108,101,70,105,110,100,101,114,82,6,0,0,115,
+    95,70,105,108,101,70,105,110,100,101,114,83,6,0,0,115,
     6,0,0,0,8,2,12,1,16,1,122,54,70,105,108,101,
     70,105,110,100,101,114,46,112,97,116,104,95,104,111,111,107,
     46,60,108,111,99,97,108,115,62,46,112,97,116,104,95,104,
@@ -2629,14 +2629,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     101,114,78,114,7,0,0,0,41,3,114,221,0,0,0,114,
     101,1,0,0,114,107,1,0,0,114,7,0,0,0,114,106,
     1,0,0,114,8,0,0,0,218,9,112,97,116,104,95,104,
-    111,111,107,72,6,0,0,115,4,0,0,0,14,10,4,6,
+    111,111,107,73,6,0,0,115,4,0,0,0,14,10,4,6,
     122,20,70,105,108,101,70,105,110,100,101,114,46,112,97,116,
     104,95,104,111,111,107,99,1,0,0,0,0,0,0,0,0,
     0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,114,
     67,1,0,0,41,2,78,122,16,70,105,108,101,70,105,110,
     100,101,114,40,123,33,114,125,41,41,2,114,89,0,0,0,
     114,65,0,0,0,114,21,1,0,0,114,7,0,0,0,114,
-    7,0,0,0,114,8,0,0,0,114,68,1,0,0,90,6,
+    7,0,0,0,114,8,0,0,0,114,68,1,0,0,91,6,
     0,0,114,61,1,0,0,122,19,70,105,108,101,70,105,110,
     100,101,114,46,95,95,114,101,112,114,95,95,114,69,0,0,
     0,41,15,114,150,0,0,0,114,149,0,0,0,114,151,0,
@@ -2645,7 +2645,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     114,91,1,0,0,114,226,0,0,0,114,102,1,0,0,114,
     234,0,0,0,114,108,1,0,0,114,68,1,0,0,114,7,
     0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
-    0,0,114,94,1,0,0,195,5,0,0,115,24,0,0,0,
+    0,0,114,94,1,0,0,196,5,0,0,115,24,0,0,0,
     8,0,4,2,8,7,8,16,4,4,8,2,8,15,10,5,
     8,51,2,31,10,1,12,17,114,94,1,0,0,99,4,0,
     0,0,0,0,0,0,0,0,0,0,6,0,0,0,8,0,
@@ -2668,7 +2668,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     90,8,112,97,116,104,110,97,109,101,90,9,99,112,97,116,
     104,110,97,109,101,114,164,0,0,0,114,210,0,0,0,114,
     7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,14,
-    95,102,105,120,95,117,112,95,109,111,100,117,108,101,96,6,
+    95,102,105,120,95,117,112,95,109,111,100,117,108,101,97,6,
     0,0,115,36,0,0,0,10,2,10,1,4,1,4,1,8,
     1,8,1,12,1,10,2,4,1,14,1,2,1,8,1,8,
     1,8,1,14,1,12,1,6,2,2,254,114,113,1,0,0,
@@ -2689,7 +2689,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     101,120,116,101,110,115,105,111,110,115,90,6,115,111,117,114,
     99,101,90,8,98,121,116,101,99,111,100,101,114,7,0,0,
     0,114,7,0,0,0,114,8,0,0,0,114,208,0,0,0,
-    119,6,0,0,115,8,0,0,0,12,5,8,1,8,1,10,
+    120,6,0,0,115,8,0,0,0,12,5,8,1,8,1,10,
     1,114,208,0,0,0,99,1,0,0,0,0,0,0,0,0,
     0,0,0,1,0,0,0,1,0,0,0,67,0,0,0,115,
     8,0,0,0,124,0,97,0,100,0,83,0,114,69,0,0,
@@ -2697,7 +2697,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     116,115,116,114,97,112,95,109,111,100,117,108,101,114,7,0,
     0,0,114,7,0,0,0,114,8,0,0,0,218,21,95,115,
     101,116,95,98,111,111,116,115,116,114,97,112,95,109,111,100,
-    117,108,101,130,6,0,0,115,2,0,0,0,8,2,114,116,
+    117,108,101,131,6,0,0,115,2,0,0,0,8,2,114,116,
     1,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
     2,0,0,0,4,0,0,0,67,0,0,0,115,50,0,0,
     0,116,0,124,0,131,1,1,0,116,1,131,0,125,1,116,
@@ -2712,7 +2712,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     104,114,61,0,0,0,114,77,1,0,0,41,2,114,115,1,
     0,0,90,17,115,117,112,112,111,114,116,101,100,95,108,111,
     97,100,101,114,115,114,7,0,0,0,114,7,0,0,0,114,
-    8,0,0,0,218,8,95,105,110,115,116,97,108,108,135,6,
+    8,0,0,0,218,8,95,105,110,115,116,97,108,108,136,6,
     0,0,115,8,0,0,0,8,2,6,1,20,1,16,1,114,
     118,1,0,0,41,1,114,87,0,0,0,114,69,0,0,0,
     41,3,78,78,78,41,2,114,0,0,0,0,114,0,0,0,
@@ -2757,7 +2757,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     1,8,1,10,1,14,1,4,4,4,1,2,1,2,1,4,
     255,8,4,6,16,8,3,8,5,8,5,4,6,10,1,8,
     30,8,6,8,8,8,10,8,9,8,5,4,7,10,1,8,
-    8,10,5,10,22,0,127,16,29,12,1,4,2,4,1,6,
+    8,10,5,10,22,0,127,16,30,12,1,4,2,4,1,6,
     2,4,1,10,1,8,2,6,2,8,2,16,2,8,71,8,
     40,8,19,8,12,8,12,8,31,8,20,8,33,8,28,10,
     24,10,13,10,10,8,11,6,14,4,3,2,1,12,255,14,
diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h
index e20a898..951f8f8 100644
--- a/Python/opcode_targets.h
+++ b/Python/opcode_targets.h
@@ -98,7 +98,7 @@
     &&TARGET_DELETE_ATTR,
     &&TARGET_STORE_GLOBAL,
     &&TARGET_DELETE_GLOBAL,
-    &&_unknown_opcode,
+    &&TARGET_ROT_N,
     &&TARGET_LOAD_CONST,
     &&TARGET_LOAD_NAME,
     &&TARGET_BUILD_TUPLE,
